位运算基础的异或运算,线性时间复杂度和常数空间复杂度。
class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for (int i: nums) {
ans ^= i;
}
return ans;
}
}
class Solution {
public int singleNumber(int[] nums) {
HashSet<Integer> set = new HashSet<>();
// 遍历数组,使用集合来存储和移除数字
for (int num : nums) {
if (set.contains(num)) {
set.remove(num); // 如果已经存在,移除
} else {
set.add(num); // 如果不存在,添加
}
}
// 最后集合中只会剩下那个出现一次的数字
return set.iterator().next(); // 返回集合中的唯一元素
}
}
class Solution {
public int singleNumber(int[] nums) {
HashMap<Integer, Integer> cnt = new HashMap<>();
// 记录每个数字出现的次数
for (int num : nums) {
cnt.put(num, cnt.getOrDefault(num, 0) + 1);
}
// 找到出现次数为 1 的数字
for (int num : nums) {
if (cnt.get(num) == 1) {
return num;
}
}
return -1;
}
}
class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
if(nums.length<2 || nums[0]!=nums[1]) return nums[0];
for(int i = 1; i<nums.length; i+=2){
if(nums[i]!=nums[i-1]){
return nums[i-1];
}
}
return nums[nums.length-1];
}
}