当前位置:网站首页>leetcode:319. 灯泡开关
leetcode:319. 灯泡开关
2022-08-09 22:01:00 【OceanStar的学习笔记】
题目来源
题目描述
题目解析
分析数据量
- 遍历不行
找规律
- 首先,对于第x个灯泡,它经过n轮,什么情况下它还亮着呢?
- 显然,对x做了奇数次的切换才能保证x是亮着的
- 所以,我们要做的是找到第几个位置的灯泡会做奇数次切换
- 那么,下一个问题:什么情况下会切换第x个灯泡的开关?
- 显然,当轮数k是x的约数时才会切换第x个灯泡的开关
- 比如,给定n为9,x为6。很明显,只有第1、2、3、6轮会切换第6个灯泡的开关,所以第6个灯泡是灭的,因为它做了偶数次切换。
- 而我们要找的是做了奇数次切换的灯泡,也就是约数个数为奇数的灯泡
- 于是问题转换为:在[1, n]内有多少个数,其约数的个数为奇数个。
- 结论:完全平方数的因数个数是奇数,非完全平方数因数个数为偶数。
- 比如当n为 36 时,它的因数有 (1,36), (2,18), (3,12), (4,9), (6,6), 可以看到前四个括号里成对出现的因数各不相同,括号中前面的数改变了灯泡状态,后面的数又变回去了,等于灯泡的状态没有发生变化,只有最后那个 (6,6),在次数6的时候改变了一次状态,没有对应其它的状态能将其变回去了,所以灯泡就一直是点亮状态的。所以所有平方数都有这么一个相等的因数对,即所有平方数的灯泡都将会是点亮的状态。
- 问题最终转换为:在 [1,n]中完全平方数的个数为多少。
class Solution {
public:
int bulbSwitch(int n) {
int res = 1;
while (res * res <= n) ++res;
return res - 1;
}
};
class Solution {
public:
int bulbSwitch(int n) {
return sqrt(n);
}
};
边栏推荐
- Redis
- 【软考 系统架构设计师】案例分析④ 软件架构风格
- 你的 Link Button 能让用户选择新页面打开吗?
- UML类图五种关系的代码实现[通俗易懂]
- Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
- In programming languages, the difference between remainder and modulo
- leetcode 38. 外观数列
- Under the NVM node installation;The node environment variable configuration
- Let's talk about what DDL, DML, DQL and DCL are in SQL statements
- R语言检验时间序列的平稳性:使用tseries包的adf.test函数实现增强的Dickey-Fuller(ADF)检验、检验时序数据是否具有均值回归特性(平稳性)、不具有均值回归特性的案例
猜你喜欢
AI+Medical: Using Neural Networks for Medical Image Recognition and Analysis
[Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]
Swift 需求 如何防止把view重复添加到win里面
第十七期八股文巴拉巴拉说(数据库篇)
How do task flow executors work?
This article lets you quickly understand implicit type conversion [integral promotion]!
Flask之路由(app.route)详解
2022年中国第三方证券APP创新专题分析
【微服务~Nacos】Nacos之配置中心
Basic JSON usage
随机推荐
【软考 系统架构设计师】案例分析⑤ 质量属性和架构评估
Converting angles to radians
typedef和#define的花里胡哨的用法
每日一R「02」所有权与 Move 语义
重要的不是成为海贼王,而是像路飞一样去冒险
shell学习
深度剖析 Apache EventMesh 云原生分布式事件驱动架构
mysql 找不到或无法加载已注册的 .Net Framework Data Provider。
编译原理之文法
Cesium渐变色3dtiles白模(视频)
【EF】数据表全部字段更新与部分字段更新
Js fifteen interview questions (with answers)
NodeJS使用JWT
Bean life cycle
Multiple reasons for MySQL slow query
The overall construction process of the Tensorflow model
2022年中国第三方证券APP创新专题分析
Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
xctf攻防世界 Web高手进阶区 ics-05
FileZilla搭建FTP服务器图解教程