文章目录
- [461. 汉明距离](https://leetcode.cn/problems/hamming-distance/submissions/542447020/)
- [448. 找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/submissions/)
- [136. 只出现一次的数字](https://leetcode.cn/problems/single-number/submissions/542442235/)
- [448. 找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/)
461. 汉明距离
本身不改变 x 和 y,每次取不同的偏移位进行比较,不同则加一。
循环固定取满 32 。
class Solution {
public int hammingDistance(int x, int y) {
int ans = 0;
for(int i=0;i<32;i++){
//和 1向与 就是当两个数都是1 的时候就返回1,不然就返回0
int a = (x>>i)&1,b=(y>>i)&1;
// 异或就是两个不一样就为1 一样则为0
ans += a^b;
}
return ans;
}
}
448. 找到所有数组中消失的数字
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
int n = nums.length;
List<Integer> res = new ArrayList<>();
HashSet<Integer> set = new HashSet<>();
for(int i=0;i<n;i++){
set.add(nums[i]);
}
for(int i =1 ; i <=n;i++){
if(set.add(i)){
res.add(i);
}
}
return res;
}
}
136. 只出现一次的数字
、两个数相同异或等于0 不同等与一 一直循环异或就可以得到最终的那个数
class Solution {
public int singleNumber(int[] nums) {
int x = 0;
for(int i =0;i<nums.length;i++){
x^=nums[i];
}
return x;
}
}
448. 找到所有数组中消失的数字
SET去重,直接加入,如果set能add成功的话说明 nums中没有,这时候就可以加入list
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
int n = nums.length;
List<Integer> res = new ArrayList<>();
HashSet<Integer> set = new HashSet<>();
for(int i=0;i<n;i++){
set.add(nums[i]);
}
for(int i=1;i<=n;i++){
if(set.add(i)){
res.add(i);
}
}
return res;
}
}