338. 比特位计数

  • 分析数字奇偶性与二进制个数的关系
  1. 奇数:二进制表示中,奇数一定比前面那个偶数多一个 1,因为多的就是最低位的 1。
  2. 偶数:二进制表示中,偶数中 1 的个数一定和除以 2 之后的那个数一样多。因为最低位是 0,除以 2 就是右移一位,也就是把那个 0 抹掉而已,所以 1 的个数是不变的。
	vector<int> countBits(int n) 
    {
		vector<int> res(n+1, 0);
		for(int i = 1; i <= n; ++i)
		{
			if(i % 2 == 1)
			{
				res[i] = res[i-1] + 1;
			}
			else
			{
				res[i] = res[i/2];
			}
		}
		return res;
    }
上一篇:【Java题解】338. 比特位计数


下一篇:day27 n种内部类