LeetCode-每日一题 319. 灯泡开关 [Java实现] [极速] [极简]

这是一个关于LeetCode中319题的解析,探讨了如何解决灯泡开关问题。初始有n个关闭的灯泡,按特定规则进行开关操作,最终求解亮着的灯泡数量。文章通过数学方法解释,指出灯泡的开关次数与其因子数相关,而只有因子数为奇数的灯泡最终会亮着。特别地,只有平方数的灯泡因子数是奇数。因此,问题简化为在[1, n]范围内找出平方数的数量,即小于等于sqrt(n)的整数平方数个数。" 128836867,16971734,飞羽羽毛球馆管理系统设计与实现 - Node.js+Vue,"['前端开发', '后端开发', 'Vue.js', 'Node.js', '课程设计']
摘要由CSDN通过智能技术生成

初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。

第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。

找出并返回 n 轮后有多少个亮着的灯泡。

示例 1

 

输入:n = 3
输出:1 
解释
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 

你应该返回 1,因为只有一个灯泡还亮着。


方法一:数学

读题可得

  • 每个位置的灯泡都至少被切换一次,即它们都有共同的因子数 1
  • 对于第 i 个灯泡来说,只有其第“因子”轮才会切换,若其有 q 个因子,则最终被切换 q 次。因为初始状态是关闭状态,那么因子数是奇数的灯泡最终是亮着的。
  • 注意到只有平方数的因子不是成对出现(如 1,2、2&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值