题目:
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?
题目大意:
给定一个整数数组,数组中每个元素都显示两次,只有一个元素只显示一次。找出这个只显示一次的元素。
注意:
要求线性时间复杂度。
分析:
最易想到的做法是,把每个元素一次存储到HashMap中,出现重复的就删除,最后剩余的那个元素就是要找的只出现一次的元素。
代码如下:
public class Solution
{
public int singleNumber(int[] nums)
{
Map<Integer,Integer> input=new HashMap<Integer,Integer>();
input.put(nums[0], 0);
int finalnum = 0;
int label=0;
for(int i=1;i<nums.length;i++)
{
if(input.containsKey(nums[i]))
input.remove(nums[i]);
else input.put(nums[i],i);
}
for(int i=0;i<nums.length;i++)
{
if(input.containsKey(nums[i]))
{
label=input.get(nums[i]);
finalnum=nums[label];
break;
}
}
return finalnum;
}
}