本文主要是介绍LeetCode338比特位计数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
解析
动态规划,将当前的数的最后一位去掉,然后判断去掉的最后一位是0还是1。
public int[] countBits(int n) {int[] res = new int[n + 1];// 1101 = 110 + 1 (3 = 2 + 1)// 1010 = 101 + 0 (2 = 2 + 0)for (int i = 1; i <= n; i++) {res[i] = res[i >> 1] + (i & 1);}return res;}
这篇关于LeetCode338比特位计数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!