方法一:
思路:先排序,然后对相邻两个元素进行比较。该方法不满足线性时间复杂度。
代码:
class Solution {
public int[] singleNumber(int[] nums) {
int[] r = new int[2];
int t=0;
Arrays.sort(nums);
for(int i=0;i<nums.length-1;i++){
if(nums[i]!=nums[i+1]){
if(i==0){
r[t]=nums[i];
t++;
}else if(nums[i]!=nums[i-1]){
r[t]=nums[i];
t++;
}
if(i==(nums.length-2)){
r[t]=nums[i+1];
t++;
}
}
if(t==2) break;
}
return r;
}
}
方法二:
思路:利用哈希表进行统计,将统计次数为1的元素输出。该方法不满足常数空间复杂度。
代码:
class Solution {
public int[] singleNumber(int[] nums) {
int[] r =new int[2];
int j=0;
Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
}
for(int t:map.keySet()){
if(map.get(t)==1){
r[j++]=t;
}
}
return r;
}
}