P49. 二进制中 1 的个数

https://algocasts.io/episodes/XZWvbBW7

请问解法1中O(m),循环处理了32次(int位数),m为何不是32? 谢谢

@williamhau01

对于 32 位的整数,m 就是等于 32。这里用一个 m 来表示,只是想通用一些。比如对于 64 位整数,m 就等于 64。

另外,对于时间/空间复杂度,我们一般不会使用 O(32) 这样来表示。对于 32 这样和 n 无关的常量,O(32) 就直接认为是 O(1) 了(即常量时间/空间复杂度)。 所以对于一些题目,如果无论问题规模 n 是什么,我们都只需要一些固定大小的小数组,比如 int[] a = new int[26];int[] b = new int[32]; 之类的,这时我们也可以认为空间复杂度就是 O(1)。

同理,把这个题目的时间复杂度视为 O(1),其实也是对的。

感谢详细的解答!