1.比特位计数
题目描述:
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
示例:
输入:n = 5
输出:[0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
class Solution {
public int[] countBits(int n) {
int[] res = new int[n + 1];
res[0] = 0;
for (int i = 1; i < n +1; i++) {
if(i == 1) res[i] = 1;
else if (i == 2) res[i] = 1;
else res[i] = res[i % 2] + res[i / 2];
}
return res;
}
}
2.只出现一次的数字
题目描述:
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例:
输入:nums = [4,1,2,1,2]
输出:4
class Solution {
public int singleNumber(int[] nums) {
int number = nums[0];
for (int i = 1; i < nums.length; i++) {
number = number ^ nums[i];
}
return number;
}
}