解題思路:
最直接的方法,統計每個數出現的次數。使用 HashMap 或者 HashSet,由於每個數字最多出現兩次,我們可以使用 HashSet。
遍歷數組,遇到的數如果 HashSet 中存在,就把這個數刪除。如果不存在,就把它加入到 HashSet 中。最後 HashSet 中剩下的兩個數就是我們要找的了。
HashSet:
class Solution {
public int[] singleNumbers(int[] nums) {
HashSet<Integer>set=new HashSet<>();
for(int i:nums){
if(set.contains(i))
set.remove(i);
else set.add(i);
}
int []res=new int[2];
int i=0;
for(int n:set){
res[i]=n;
i++;
}
return res;
}
}
HashMap:
class Solution {
public int[] singleNumbers(int[] nums) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i:nums){
if(map.containsKey(i))
map.put(i,map.get(i)+1);
else map.put(i,1);
}
int []res=new int[2];
int i=0;
for(int n:nums){
if(map.get(n)==1)
res[i++]=n;
}
return res;
}
}
參考博客鏈接: