• 边工作边刷题:70天一遍leetcode: day 52


    Bulb Switcher

    要点:数学题一直是弱项,关键是推理思维总是不清晰。比如这题,模糊的知道因子对决定了最后亮灯的个数,但是具体的推理就没记住
    先说答案,因为code极其简单:int(math.sqrt(n))

    • 开始的时候理解错误,every second的意思是从2开始每隔2(1开始计数),所以灯泡1只打开1次不会关闭
    • 有了1的基础,就好理解了:对于每一个灯泡,其被toggle的次数就是因子个数,所以只有完全平方数才是奇数次。当然这个也不是那么容易想,注意虽然完全平方数也有多个因子,但不影响奇偶性。
    • 想到这里,还有一种错误理解,就是统计n之前的完全平方数要用loop,实际上就算sqrt(n)就可以了
    class Solution(object):
        def bulbSwitch(self, n):
            """
            :type n: int
            :rtype: int
            """
            return int(math.sqrt(n))
    
    
  • 相关阅读:
    ElasticSearch入门到筋痛
    JavaScript学习(四)
    JavaScript学习(三)
    JavaScript学习(二)
    JavaWeb学习(一)
    final
    static
    object的方法
    java 数据类型
    spring mvc
  • 原文地址:https://www.cnblogs.com/absolute/p/5690314.html
Copyright © 2020-2023  润新知