一开始我的思路是先给这个数组排序,然后相邻之间进行比较,如果一个元素和他的下一个元素不同则输出该元素,然后发现这种做法太复杂了。
之后我又想到用map集合,把数组的元素作为key,然后出现的次数为value,遍历数组,然后再遍历整个map集合,找出value为1的关键字代码如下:
class Solution {
public int singleNumber(int[] nums) {
int j = 0;
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
//遍历该数组,往map集合里存,数组元素为key,出现次数为value
for(int i = 0;i<nums.length;i++)
{
if(map.get(nums[i]) == null)
map.put(nums[i],1);
else if(map.get(nums[i]) == 1)
map.put(nums[i],2);
}
//找出map集合里value为1的元素
for (Map.Entry<Integer,Integer> str : map.entrySet()) {
if(str.getValue() == 1)
j = str.getKey();
}
return j;
}
}