【leetcode】灯泡开关c++
题目描述:
初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。
第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。
示例1:
输入:n = 3
输出:1
解释:
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].
你应该返回 1,因为只有一个灯泡还亮着。
示例2:
输入:n = 0
输出:0
示例3:
输入:n = 1
输出:1
提示:
0 <= n <= 109
代码:
class Solution {public:int bulbSwitch(int n) {int s=0;for(int i=0;i<n;i++){ if(int(sqrt(i+1))*int(sqrt(i+1))==i+1)s=s+1;}return s;}
};
属于数论问题,用多层循环会超时。
第 i 次改变,会每隔 i 个灯泡就切换一次灯泡状态;即第 i 次操作时,会改变所有编号为 i 的倍数的灯泡的状态。
所以编号为 a 的灯泡,只要a是x的倍数,灯泡a就会在第x次被改变状态;即灯泡a会在a的约数次操作中被改变,一共被改变的次数为a的约数的个数。
灯泡只有开和关两个状态,初始为关闭状态,则偶数次操作灯泡关闭,奇数次操作灯泡打开;即灯泡编号的约数的个数为奇数时,灯泡才亮起。
而除了完全平方数的约束个数为奇数,其他数字的约数都是成双成对出现,均为偶数。
对于灯泡1~n,判断 i 是否为完全平方数,若是则亮起的灯泡数+1。
简化求完全平方数 代码:
class Solution {public:int bulbSwitch(int n) {return int(sqrt(n));}
};
根据数论,数字1~n中,完全平方数的个数为根号n,返回sqrt(n)向下取整即可。
【leetcode】灯泡开关c++相关推荐
- 【LeetCode】灯泡开关Ⅰ~ Ⅳ(你还是把我关了吧)
[LeetCode]灯泡开关Ⅰ~ Ⅳ
- LeetCode(319):灯泡开关 Bulb Switcher(Java)
2019.8.6 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 每个数i必能分解成任意两个数的乘积(最少会有1*i),因此只有平方数会进行单次开关,因此只需要统计截止n的平方 ...
- LeetCode 5353. 灯泡开关 III
5353. 灯泡开关 III 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排.最初,所有的灯都是关着的. 在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k ...
- C/C++描述 LeetCode周赛 5473. 灯泡开关 IV
5473. 灯泡开关 IV 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博 ...
- 20200308: 生成每种字符都是奇数个的字符串灯泡开关 III(leetcode5352-5353)
生成每种字符都是奇数个的字符串&灯泡开关 III 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 第一题没什么难度,StringBuilder拼接即可 第二题一开始想复杂了,用了Ha ...
- 用html和js制作一个控制灯泡开关效果
用html和js制作一个控制灯泡开关效果 **用css样式来控制div图片和文本的位置,然后用js里面onclick点击事件来控制图片的更换效果来实现当前运行图的效果** 1.以下是运行的效果图 2. ...
- 算法 319. 灯泡开关 python
319. 灯泡开关 思路 整数的因数 因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数. class Solution(object):def bulbSwitch( ...
- JavaScript 点击灯泡开关
JavaScript 点击灯泡开关 首先导入两张照片: 方法一: <img src="./img/1.gif" alt="" onclick= ...
- 开关灯效果HTML,H5+CSS3打开关闭灯泡开关动画特效
H5+CSS3打开关闭灯泡开关动画特效 html, body { font-family: Georgia, serif; font-style: italic; font-size: 4.2vmin ...
- JQuery实现灯泡开关【文末附源码】
JQuery实现灯泡开关[文末附源码]
最新文章
- 如何使用 Arthas 定位 Spring Boot 接口超时 ?
- 大文件上传服务器:支持超大文件HTTP断点续传的实现办法
- Activiti如何实现流程的回退
- unity and MySql
- 阿里云服务器部署django项目
- Opencv4.5.5 + Opencv4.5.5_contrib 图像拼接
- 机器学习介绍jc01
- java property类_Java之Property类使用
- Entity Framework 关系约束配置
- 编程让鼠标一直动_相见恨晚的效率提升工具,低价捡漏可以自定义编程快捷键的鼠标...
- Android开机动画的动态替换
- Linux高级命令find,grep,sed,awk
- python量化交易书籍推荐_量化交易的几本书籍介绍
- hdoopHA的文件配置和安装hadoop和安装zookeeper
- omf多路径 oracle_Oracle OMF 功能详解
- [SV]SystemVerilog 断言(SVA)检查器库(OVL)
- 怎么调整计算机的音量,教你电脑声音如何调大
- 【python】No such file or directory的解决方法
- 《UnityAPI.GUI界面》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+GUI+DrawTexture+FocusControl+Toggle+立钻哥哥++OK++)
- Linux配置通过qq邮件服务器发送邮件