首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Leetcode|灯泡开关

问题描述 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着。 在 k 时刻( k 取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。...灯颜色要想 变成蓝色 就必须同时满足下面两个条件: 1.灯处于打开状态。 2.排在它之前(左侧)所有灯也都处于打开状态。 请返回能够让所有开着灯都变成蓝色时刻数目 。 示例 1: ?...解决方案 思路分析 由上图Moment 1、Moment 2、Moment 4可以得知灯泡全部变蓝条件:所有点亮灯泡都连续排列在队列最左边且无任何断点,每点亮一次都进行一次判定,最后返回满足条件总数...先用布尔型来初始化一个列表,用来表示灯泡开关状态,在列表首位各加上一个元素,首加True,末尾加False,为了节约运行时间,引入一个判断变量。...在刚刚开始灯泡全熄灭时候,判断到light元素在对应列表里发生了改变,如果前为Ture,后为False,那么肯定满足条件。

53810

灯泡开关

灯泡开关 链接 初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。...第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡开关。 找出 n 轮后有多少个亮着灯泡。...第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 你应该返回 1,因为只有一个灯泡还亮着。 思路 问题可以转换为: n轮之后, 求第i个灯泡状态被改变次数, 用fi表示。...那么第n轮后第i个灯泡被改变次数为: [image.png] 进一步分析可以发现,这其实是在求 i 约数个数。...那么由于约数是成对出现,除了平方数(m=n^2m=n 2)约数个数为奇数, 其他数字约数个数均为偶数。因此, 问题最终转化为求1到n到底又多少个平方数。

64700
您找到你想要的搜索结果了吗?
是的
没有找到

灯泡开关 III

题目 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着。 在 k 时刻( k 取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。...灯颜色要想 变成蓝色 就必须同时满足下面两个条件: 灯处于打开状态。 排在它之前(左侧)所有灯也都处于打开状态。 请返回能够让 所有开着 灯都 变成蓝色 时刻 数目 。 ?...输入:light = [2,1,3,5,4] 输出:3 解释:所有开着灯都变蓝时刻分别是 1,2 和 4 。...向右检查挨着是否亮 for(j = light[i]; j <= rightLight; ++j) { if(Lig[j])//右边有亮...leftallok[j] = true;//到那里也是全亮 else break; } if(leftallok[rightLight])//最右侧左边全亮

58330

Python|找规律解决灯泡开关

问题描述 现有一个房间,墙上挂有n只已经打开灯泡和 4 个按钮。在进行了m次未知操作后,你需要返回这n只灯泡可能有多少种不同状态。...假设这 n 只灯泡被编号为 [1, 2, 3 ..., n],这 4 个按钮功能如下: 将所有灯泡状态反转(即开变为关,关变为开) 将编号为偶数灯泡状态反转 将编号为奇数灯泡状态反转 将编号为...3k+1 灯泡状态反转(k = 0, 1, 2, ...)...其次,按钮执行前后顺序变换对最终灯泡情况没有影响。...首先观察开关次数对开关方式变化: m=0时,情况不变,只有1种状态 m=1时,根据示例思考一下可以知道,当n>=3时状态恒为4 m=2时,数字1-4代表按钮4种功能,0代表返回原状态: 1+1=0 1

80420

LeetCode - 汉明距离&灯泡开关

鉴于今天这两题题解都特别的短,所以把两题写在一起了。分别是461题简单难度汉明距离和319题中等难度灯泡开关。...给出两个整数 x 和 y,计算它们之间汉明距离。 注意:0 ≤ x, y < 231. 灯泡开关: 初始时有 n 个灯泡关闭。第 1 轮,你打开所有的灯泡。第 2 轮,每两个灯泡你关闭一次。...第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。对于第 n 轮,你只切换最后一个灯泡开关。找出 n 轮后有多少个亮着灯泡。...灯泡开关这题,也不难,就是有点玄学,每一轮都是将第i个切换开关。比如一共8个开关,第8个开关在第1/2/4/8轮会被切换状态,第7个只会在第1/7轮切换状态。...灯泡开关结果: ?

58220

灯泡开关 IV

题目 房间中有 n 个灯泡,编号从 0 到 n-1 ,自左向右排成一行。最开始时候,所有的灯泡都是 关 着。...请你设法使得灯泡开关状态和 target 描述状态一致,其中 target[i] 等于 1 第 i 个灯泡是开着,等于 0 意味着第 i 个灯是关着。...有一个开关可以用于翻转灯泡状态,翻转操作定义如下: 选择当前配置下任意一个灯泡(下标为 i ) 翻转下标从 i 到 n-1 每个灯泡 翻转时,如果灯泡状态为 0 就变为 1,为 1 就变为...返回达成 target 描述状态所需 最少 翻转次数。 示例 1: 输入:target = "10111" 输出:3 解释:初始配置 "00000"....从第 3 个灯泡(下标为 2)开始翻转 "00000" -> "00111" 从第 1 个灯泡(下标为 0)开始翻转 "00111" -> "11000" 从第 2 个灯泡(下标为 1)开始翻转 "11000

38020

灯泡开关(找规律)

题目 初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。...第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡开关。 找出 n 轮后有多少个亮着灯泡。...第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 你应该返回 1,因为只有一个灯泡还亮着。...t5 X t6 X t7 X t8 X t9 X 奇 偶 偶 奇 偶 偶 偶 偶 奇 可以发现 每个数字只能在自己约数下可以按下开关...约数个数为奇数个,灯亮着 完全平方数,如5X5=25 约数个数为奇数个 所以答案为 floor(n)floor(\sqrt n)floor(n​) class Solution { public:

65020

​LeetCode刷题实战319:灯泡开关

今天和大家聊问题叫做 灯泡开关,我们先来看题面: https://leetcode-cn.com/problems/bulb-switcher/ There are n bulbs that are...初始时有 n 个灯泡处于关闭状态。 对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。 第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。...第 2 轮,每两个灯泡切换一次开关。即,每两个灯泡关闭一个。 第 3 轮,每三个灯泡切换一次开关。 第 i 轮,每 i 个灯泡切换一次开关。而第 n 轮,你只切换最后一个灯泡开关。...找出 n 轮后有多少个亮着灯泡。 示例 ? 解题 https://www.acwing.com/solution/content/20256/ 问题转化为求1~n有多少个数字约数个数为奇数个。...解法一 联想到提高课中“轻拍牛头”那道题,可以反着求每个数约数个数。对于1~n中某一个数i,枚举它所有倍数,计算他对它倍数约数个数贡献。

34020

每日算法系列【LeetCode 319】灯泡开关

题目描述 初始时有 个灯泡关闭。第 轮,你打开所有的灯泡。第 轮,每两个灯泡你关闭一次。第 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 轮,每 个灯泡切换一次开关。...对于第 轮,你只切换最后一个灯泡开关。找出 轮后有多少个亮着灯泡。 示例1 输入: 3 输出: 1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关闭]....题解 首先有 个灯泡,假设编号为 到 。第 轮,所有编号是 倍数灯泡开关了一次。第 轮,所有编号是 倍数灯泡开关了一次。...类推下去,第 轮,所有编号是 倍数灯泡开关了一次。 综上,对于编号为 灯泡来说,它最终被开关次数取决于 有几个因数。如果有奇数个因数,那么它最后就是开着,否则就是关着。...在具体实现时候,为了防止出现浮点数误差(比如 算出来是 ,取整得到 ),我们可以计算 结果。

42430

每日算法系列【LeetCode 319】灯泡开关

题目描述 初始时有 个灯泡关闭。第 轮,你打开所有的灯泡。第 轮,每两个灯泡你关闭一次。第 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 轮,每 个灯泡切换一次开关。...对于第 轮,你只切换最后一个灯泡开关。找出 轮后有多少个亮着灯泡。 示例1 输入: 3 输出: 1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关闭]....题解 首先有 个灯泡,假设编号为 到 。第 轮,所有编号是 倍数灯泡开关了一次。第 轮,所有编号是 倍数灯泡开关了一次。...类推下去,第 轮,所有编号是 倍数灯泡开关了一次。 综上,对于编号为 灯泡来说,它最终被开关次数取决于 有几个因数。如果有奇数个因数,那么它最后就是开着,否则就是关着。...在具体实现时候,为了防止出现浮点数误差(比如 算出来是 ,取整得到 ),我们可以计算 结果。

54030

灯泡开关

题目描述 现有一个房间,墙上挂有 只已经打开灯泡和 个按钮。在进行了 次未知操作后,你需要返回这 只灯泡可能有多少种不同状态。...假设这 只灯泡被编号为 ,这 个按钮功能如下: 将所有灯泡状态反转(即开变为关,关变为开) 将编号为偶数灯泡状态反转 将编号为奇数灯泡状态反转 将编号为 灯泡状态反转() 示例1...操作 每 个灯状态就要反转一次,也就是灯状态按照周期 重复(与 异或)。 综上,我们只需要取周期最小公倍数 就行了。...也就是只需要看前 盏灯最终状态,就能唯一确定后面所有灯最终状态。 形式化表示,用 表示第 个操作是否用过。...那么对于第 盏灯来说,它最终状态可以表示为: 由此可以推出: ,也就是灯最终状态以 为周期。 到此其实可以直接暴力枚举 所有状态了,但是还是有优化空间

48730

CSS实现最简洁开关

目前最常见开关是这种圆形风格:(若干年后就不一定了) 网上也有很多用CSS和HTML实现例子,但都不完美,因为往往需要多个html元素配合才能实现这种开关,如何用一个最传统<input type...最近终于找到了方法:使用CSS伪元素 :before 和 :after 来作为额外元素,用纯CSS实现一个最简洁又好看、一个元素搞定开关。...开关把柄就是图中小圆(高度略小于底座),用 :before 实现: input[type="checkbox"]:before { content: ""; position...2px; border-radius: 50%; transition: left cubic-bezier(0.3, 1.5, 0.7, 1) 0.3s; } 为了实现开关切换时惯性效果...white-space: nowrap; color: white; font: 14px/30px monospace; font-weight: bold; } 于是就实现了一个最简洁开关

2.4K30

SwitchButton 开关按钮 多种实现方式

刚开始接触开关样式按钮是在IOS系统上面,它切换以及滑动十分帅气,深入人心。 所谓开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按钮效果。...二.重写CompoundButton控件实现带滑动效果开关按钮:     重写CompuundButton实现可能会显得相对繁琐些,主要是考虑状态是否已经选中等情况文字显示。    ...三.重写CheckBox控件实现带滑动效果开关按钮:     其实,看上面给开发文档内容,大家都可以知道,CheckBox其实就是继承CompoundButton控件,只是重构CheckBox会比...四.重写View实现带滑动效果开关按钮:    众所周知,以上所有的控件都是继承了View这个父类,所以,如果你用View去操作的话,就没有自带方法限制,可是要满足你要 实现SwitchButton...效果,你必须自己写开关状态监听接口,并且自己写setChecked方法实现同等效果。

2.9K70

实现一个简单特性开关

抽象一下的话就是需要通过开关来控制一个功能是否生效,也就是特性开关(Feature Flags)模式。 Martin Fowler 先生写过一篇特性开关模式文章,感兴趣读者可以深入阅读。...针对本次应用场景和日后类似需求,我用 Redis 作为存储实现了一个简单特性开关。...这样设计会确保特性开关相关函数都是纯函数,没有任何副作用,方便编写单元测试,并且使用起来可以更灵活(例如可以切换数据源为其他数据库或直接存在内存对象中)。...使用特性开关 我们可以在代码逻辑中直接根据指定特性状态来走不同分支,也可以将相关接口暴露给前端,有前端根据不同状态控制页面逻辑。...,适用于单分支发布 SASS 项目,一个显著优势是可以在功能上线前就将代码集成到主分支中(避免较晚合并代码时痛苦),在测试环境通过打开特性开关来测试功能,同时不影响线上环境正常使用。

33710

自定义注解实现服务动态开关

正如我题目所说:《自定义注解实现服务动态开关》,接下来和shigen一起来揭秘吧。 前言 在shigen实习时候,遇到了业务场景:实现服务动态开关,避免redis内存被打爆了。...当时实现是这样: 在我nacos上这样配置: service: enable: true 那对应java部分代码就是这样: class Service { @Value("service.enable...万一哪个开发改坏了配置,服务就是彻底玩坏了;而且,如果业务想做一个动态配置,任何人都可以在系统上点击开关,类似于下边操作: nacos配置方式直接不可行了!...,实现一个切点,之后通知切面进行操作。...接口测试 最后,我写了两个接口实现了服务调用和服务模块状态值切换。

26680

费解开关

25盏灯排成一个5x5方形。每一个灯都有一个开关,游戏者可以改变它状态。每一步,游戏者可以改变某一个灯状态。...游戏者改变一个灯状态会产生连锁反应:和这个灯上下左右相邻灯也要相应地改变其状态。 我们用数字“1”表示一盏开着灯,用数字“0”表示关着灯。...下面这种状态 10111 01101 10111 10000 11011 在改变了最左上角状态后将变成: 01111 11101 10111 10000 11011 再改变它正中间灯后状态将变成...所以我们需要做是,固定它第一行,然后枚举其余四行状态来进行操作。当枚举完以后,还需要对最后一行灯状态进行检查。...由于第一行也是可以操作,每一个灯都有按或者不按两个选项,所以我们要枚举所有第一行能够进行操作,然后开始递推,找出一个最佳答案即可。

84220
领券