1.交换两个数a、b
1 | int a = 3; |
剑指15.二进制中1的个数
1 | int hammingWeight(uint32_t n) { |
剑指56-I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
输入:nums = [4,1,4,6]
输出:[1,6] 或 [6,1]
输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]
1 | vector<int> singleNumbers(vector<int>& nums) { |
剑指56-II. 数组中数字出现的次数 II
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
输入:nums = [3,4,3,3]
输出:4
1
2
3
4
5
6
7
8
9
10
11int singleNumber(vector<int>& nums) {
int res = 0;
for (int i = 0; i < 32; i++) {
int temp = 0;
for (auto it : nums) {
if (it&(1 << i))temp++;
}
if (temp % 3 == 1)res += (1 << i);
}
return res;
}
两数相加plus
当进位==0,返回
就是转换到全部不进位的情况下,直接sum = A^B,返回。
1 | int aPlusb(int a, int b) { |
两数平均数average
1 | int average(int a, int b) { |