题目

https://leetcode.com/problems/bulb-switcher/

题解

本题将 对问题抽象的能力 的考察做到了极致。

思路


怎么理解(int)Math.sqrt(n)就是答案呢?

将n个开关,从1...n进行编号(一开始都是处于灯灭的状态);

第1轮,切换的开关为1,2,3...n
第2轮,切换的开关为2,4,6...
第3轮,切换的开关为3,6,9...

第n轮,切换的开关为n

反过来看:

第1栈灯,会在第1轮被切换状态
第2盏灯,会在第1,2轮被切换
第3盏灯,会在第1,3轮被切换
第4盏灯,会在第1,2,4轮被切换
第5盏灯,会在第1,5轮被切换
第6盏灯,会在第1,2,3,6轮被切换
第7盏灯,会在第1,7轮被切换

第n盏灯,会在第n的因数(包括1和n)轮被切换

对于输入n,进行n轮切换后,被切换偶数次的灯会处于和最初相同的灯灭状态,被切换奇数次的灯会处于灯亮状态。问题转换为,求1,2,3,...,n中,有多少个数有奇数个因数。

由于因数都是成对出现的,因此只有完全平方数有奇数个因数。因此,<=n的数里面,有多少个完全平方数就是答案

class Solution {public int bulbSwitch(int n) {return (int) Math.sqrt(n);}
}

leetcode 319. Bulb Switcher | 319. 灯泡开关相关推荐

  1. 【LeetCode Python实现】 5473. 灯泡开关 IV(中等)

    想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送,微信随时解答你的疑问 文章目录 题目描述 示例 1: 示例 2: 示例 3: 示例 4: ...

  2. LeetCode 319. Bulb Switcher--C++,java,python 1行解法--数学题

    LeetCode 319. Bulb Switcher–C++,java,python 1行解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有 ...

  3. LeetCode(319):灯泡开关 Bulb Switcher(Java)

    2019.8.6 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 每个数i必能分解成任意两个数的乘积(最少会有1*i),因此只有平方数会进行单次开关,因此只需要统计截止n的平方 ...

  4. 算法 319. 灯泡开关 python

    319. 灯泡开关 思路 整数的因数 因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数. class Solution(object):def bulbSwitch( ...

  5. 【LeetCode】灯泡开关Ⅰ~ Ⅳ(你还是把我关了吧)

    [LeetCode]灯泡开关Ⅰ~ Ⅳ

  6. LeetCode Bulb Switcher(约数个数为奇数)

    题意:给出n个灯泡,第一次,将所有灯泡打开,第二次,每隔1个按灯泡开关,第三次,每隔2个按灯泡开关,最后,隔n-1个按小灯泡开关,问最后 有几个灯泡是开着的 思路:经过奇数次变换后灯泡是开着的,所以就 ...

  7. LeetCode 5353. 灯泡开关 III

    5353. 灯泡开关 III 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排.最初,所有的灯都是关着的. 在 k  时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k ...

  8. C/C++描述 LeetCode周赛 5473. 灯泡开关 IV

    5473. 灯泡开关 IV   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博 ...

  9. 20200308: 生成每种字符都是奇数个的字符串灯泡开关 III(leetcode5352-5353)

    生成每种字符都是奇数个的字符串&灯泡开关 III 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 第一题没什么难度,StringBuilder拼接即可 第二题一开始想复杂了,用了Ha ...

最新文章

  1. Visual Studio 2019更新到16.2.2
  2. JBoss EAP应用获取运行模式、相关路径及节点信息
  3. python3精要(24)-函数内省、函数注释、函数属性
  4. 九、深入Java字符串(上篇)
  5. java 0x3f_Java源码位操作技巧欣赏
  6. vue-router嵌套路由,默认子路由设置
  7. 2019.1.23 01迷宫
  8. ASP.NET生成静态页面的简单实现
  9. Sass-学习笔记【进阶篇】
  10. 笨办法学R编程(4)
  11. 网络渗透资料大全单——漏洞库篇
  12. IDM 6.40.11.2 弹窗的解决思路
  13. 自己的vscode-settings.json配置
  14. PHP方法,传入的参数前带三个点是什么意思?
  15. Jenkins 页面不刷新最新修改配置,需要强制刷新才可以,Request Status Code:200 OK (from disk cache)
  16. *【思路】程序员怎么快速接手一个项目
  17. io复用相对于多进程、多线程的优势
  18. lammps模拟中tersoff势设置方法
  19. 程序员的2023发展方向
  20. catia二次开发_侧长条花纹定义

热门文章

  1. 【数学基础】矩阵的特征向量、特征值及其含义
  2. CodeForces - 1328D Carousel(构造+贪心)
  3. CodeForces - 1295C Obtain The String(dp预处理+贪心)
  4. CodeForces - 1066B Heaters(贪心)
  5. linux mysql tmp_linux下mysql的tmp_table_size改变大小方法
  6. 目标检测常用数据集格式
  7. java e.getmessage() null_Java e.getMessage 错误信息为null
  8. 【数据结构】哈夫曼树与哈夫曼编码
  9. Docker常用操作命令(二)
  10. Spring Boot 2.0 迁移指南