当前位置:网站首页>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);
}
};
边栏推荐
- 【EF】 更新条目时出错。有关详细信息,请参见内部异常。[通俗易懂]
- 华为鸿蒙3.0的野望:技术、应用、生态
- 阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
- Install win virtual machine on VMware
- Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
- 【微服务~Nacos】Nacos之配置中心
- 腾讯继续挥舞降本增效“大刀”,外包员工免费餐饮福利被砍了
- Flask introductory learning tutorial
- 面试官:Redis 大 key 要如何处理?
- C. Binary String Reconstruction
猜你喜欢

【LaTex】 Font “FandolSong-Regular“ does not contain requested(fontspec)Script “CJK“.如何抑制此种警告?

Presto Event Listener开发

任务流执行器是如何工作的?
![[Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]](/img/49/ebedcd4d27aa608360ac17e504f36d.png)
[Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]

在“企业通讯录”的盲区,融云的边界与分寸

JSON 基本使用

Under the NVM node installation;The node environment variable configuration

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

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

每日一R「02」所有权与 Move 语义
随机推荐
Rust dereference
2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day
第 1 章 一大波数正在靠近——排序
TRUNCATE表之后空间未释放
C. Mere Array
MySQL——JDBC
金山云地震,震源在字节?
js十五道面试题(含答案)
17-GuliMall 搭建虚拟域名访问环境
Redis
openGauss数据库基本操作(超详细)
mysql multi-table left link query
聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么
Multiple reasons for MySQL slow query
Quotefancy ,提供鼓舞人心语录的壁纸网站 - 倾城之链
xctf攻防世界 Web高手进阶区 ics-05
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
任务流执行器是如何工作的?
FileZilla搭建FTP服务器图解教程
In programming languages, the difference between remainder and modulo