当前位置:网站首页>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);
}
};
边栏推荐
- Basic operations of openGauss database (super detailed)
- Space not freed after TRUNCATE table
- 面试官:MySQL 中 update 更新,数据与原数据相同时会执行吗?大部分人答不上来!
- PHP 2D array sorted by a field
- 2022年中国第三方证券APP创新专题分析
- 开发者必备:一文快速熟记【数据库系统】和【软件开发模型】常用知识点
- Synchronization lock synchronized traces the source
- [Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]
- R语言patchwork包将多个可视化结果组合起来、使用plot_annotation函数以及tag_level参数将组合图用大写字母进行顺序编码、为组合图的标签添加自定义前缀信息
- How do task flow executors work?
猜你喜欢
华为鸿蒙3.0的野望:技术、应用、生态
Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
This article lets you quickly understand implicit type conversion [integral promotion]!
Arcgis工具箱无法使用,显示“XML包含错误“的解决方法
[Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]
深度剖析 Apache EventMesh 云原生分布式事件驱动架构
注意力引导网络用于视网膜图像分割
TRUNCATE表之后空间未释放
leetcode 刷题日记 计算右侧小于当前元素的个数
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
随机推荐
从产品角度看 L2 应用:为什么说这是一个游乐场?
Multiple reasons for MySQL slow query
[Microservice~Nacos] Configuration Center of Nacos
Metasploit常用命令、技术功能模块
shell学习
JSON 基本使用
17-GuliMall 搭建虚拟域名访问环境
你真的了解乐观锁和悲观锁吗?
Flask introductory learning tutorial
MLOps的演进历程
JS Deobfuscation - AST Restoration Case
Easyui 表单验证「建议收藏」
跨端技术方案选什么好?
json case
OKR 锦囊妙计
Flask入门学习教程
Converting angles to radians
Postgresql源码(68)virtualxid锁的原理和应用场景
级联下拉菜单的实现「建议收藏」
R语言patchwork包将多个可视化结果组合起来、使用plot_annotation函数以及tag_level参数将组合图用大写字母进行顺序编码、为组合图的标签添加自定义前缀信息