当前位置:网站首页>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);
}
};
边栏推荐
- leetcode 刷题日记 计算右侧小于当前元素的个数
- 一本通2074:【21CSPJ普及组】分糖果(candy)
- Five Star Holdings Wang Jianguo: Deepen the track with "plant spirit" and promote growth with "animal spirit"
- D. Binary String To Subsequences
- 聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么
- Solution: Edu Codeforces 109 (div2)
- Let's talk about what DDL, DML, DQL and DCL are in SQL statements
- unit test
- 力扣 1413. 逐步求和得到正数的最小值
- 第十七期八股文巴拉巴拉说(数据库篇)
猜你喜欢

腾讯继续挥舞降本增效“大刀”,外包员工免费餐饮福利被砍了

Metasploit常用命令、技术功能模块

In-depth analysis of Apache EventMesh cloud-native distributed event-driven architecture

Synchronization lock synchronized traces the source
![[Microservice~Nacos] Configuration Center of Nacos](/img/c3/9d8fb0fd49a0ebab43ed604f9bd1cc.png)
[Microservice~Nacos] Configuration Center of Nacos

Postgresql源码(68)virtualxid锁的原理和应用场景

孙正义亏掉1500亿:当初投贵了

从源码方面来分析Fragment管理中 Add() 方法

leetcode brush questions diary Calculate the number of elements on the right that is less than the current element

AI+Medical: Using Neural Networks for Medical Image Recognition and Analysis
随机推荐
“稚晖君”为2022昇腾AI创新大赛打call&nbsp;期待广大开发者加入
OKR 锦囊妙计
js十五道面试题(含答案)
你的 Link Button 能让用户选择新页面打开吗?
Swift 需求 如何防止把view重复添加到win里面
R语言拟合ARIMA模型并使用拟合模型进行预测推理:使用forecast函数计算ARIMA模型未来值(包含时间点、预测值、两个置信区间)
R语言ggstatsplot包grouped_ggscatterstats函数可视化分组散点图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)
2.1.5 大纲显示问题
Quotefancy ,提供鼓舞人心语录的壁纸网站 - 倾城之链
台风生成,广州公交站场积极开展台风防御安全隐患排查
2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day
NodeJS使用JWT
一文让你快速了解隐式类型转换【整型提升】!
A1. Prefix Flip (Easy Version)
18-GuliMall 压力测试与性能监控
JS Deobfuscation - AST Restoration Case
接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
一本通2074:【21CSPJ普及组】分糖果(candy)
A. Common Prefixes
腾讯继续挥舞降本增效“大刀”,外包员工免费餐饮福利被砍了