zoukankan      html  css  js  c++  java
  • 每日一题力扣319 开灯泡

    初始时有 n 个灯泡处于关闭状态。

    对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。

    第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。

    第 2 轮,每两个灯泡切换一次开关。 即,每两个灯泡关闭一个。

    第 3 轮,每三个灯泡切换一次开关。

    第 i 轮,每 i 个灯泡切换一次开关。 而第 n 轮,你只切换最后一个灯泡的开关。

    找出 n 轮后有多少个亮着的灯泡。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/bulb-switcher
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    正解:

    思路太巧妙了!

    对于每个灯泡,只有被开关奇数次才会最后被开着;而奇数次取决于其序号,当序号的因子为奇数个的时候,最后被开着

    所以就要找到其乘数因子为奇数个的就行

    只有完全平方数是这样

    现在转换成了n以内有几个完全平方数

    知道完全平方数的开根号就是小于该完全平方数的小完全平方数个数!

    class Solution:
        def bulbSwitch(self, n: int) -> int:
            return int(n ** 0.5)
  • 相关阅读:
    uboot中setenv和saveenv分析
    DMA和通道的区别
    openwrt 切换overlay文件系统为根文件系统
    华为SDN:解决传统网络3大问题
    企业需要申请多大宽带的专线?如何节省专线费用?
    stp
    inotify文件监控
    Qt中C++与QML交互
    内核空间可以直接访问应用层空间地址
    linux 提权漏洞总结
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14513209.html
Copyright © 2011-2022 走看看