题目:
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Subscribe to see which companies asked this question
给定一个整数的数组,然后计算其中重现重复的次数的元素,默认其中的所有元素之可能出现1次和2次。就是采用hashmap来做,采用key-value来做,其中用key来对应数组的元素,value来对应元素出现的次数。其中要当心的是,针对hashmap的遍历,采用Entry来做,返回一个entry.getKey()得到它的key值,然后就可以做了。
public static int singleNumber(int[] nums)
{
HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
int length = nums.length;
for(int i = 0; i < length; i++)
{
if(! hm.containsKey(nums[i]))
{
hm.put(nums[i], 1);
}
else
{
hm.put(nums[i], hm.get(nums[i]) + 1);
if(hm.get(nums[i]) == 2)
hm.remove(nums[i]);
}
}
Iterator it = hm.entrySet().iterator();
int b = 0;
while(it.hasNext())
{
Entry<Integer, Integer> entry = (Entry<Integer, Integer>)it.next();
Integer a = (Integer)entry.getKey();
b = a.intValue();
}
return b;
}