剑指 Offer 56 - I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
利用集合,集合是不重复的元素,如果循环遍历的过程中,发现集合中有重复元素,则删除该集合中这个元素
之后就for增强num,新建一个数组,然后把set依次放入该数组中
class Solution {
public int[] singleNumbers(int[] nums) {
Set<Integer> set=new HashSet<>();
for(int i=0;i<nums.length;i++){
if(!set.add(nums[i])){
set.remove(nums[i]);
}
}
int[] number=new int[2];
int item=0;
for(int num:set){
number[item]=num;
item++;
}
return number;
}
}