319. Bulb Switcher

解法一

思路

Brute Force 解法。 对 n 个开关,按步长为 1 ~ n 遍历,改变相应位置开关的值。

代码
class Solution {
    public int bulbSwitch(int n) {
        int[] lights = new int[n];
        for (int i = 1; i <= n; i++) {
            for (int j = i; j <=n; j += i) {
                lights[j - 1] = lights[j - 1] == 1 ? 0 : 1;
            }
        }

        int count  = 0;
        for (int i = 0; i < n; i++) {
            if (lights[i] == 1) {
                count++;
            }
        }
        return count;
    }
}
复杂度分析

这个方法在 n = 1000000 之后会超时。但的确是最直接能想到的办法。

  • 时间复杂度 O(n^2)
  • 空间复杂度 O(n)

解法二

思路

https://leetcode.com/problems/bulb-switche...

代码

(int)Math.sqrt(n);

Takeaway

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!