leetcode.136只出现一次的数字(JAVA)(hashmap)
class Solution {
public int singleNumber(int[] nums) {
Map<Integer,Integer>counts=new HashMap<Integer, Integer>();
for(int num:nums)
{
if(counts.containsKey(num))
{
counts.put(num,2);
}
else
counts.put(num,1);
}
//counts.put(num,counts.getOrDefault(num,0));
for(int temp:counts.keySet())
{
if(counts.get(temp)==1)
return temp;
}
return 0;
}
}
public int singleNumber(int[] nums){
Hashtable<Integer, Integer> table = new Hashtable<Integer, Integer>();
for (int i = 0; i < nums.length; i++){
if (table.containsKey(nums[i])){
table.remove(nums[i]);
} else {
table.put(nums[i], 1);
}
}
Set<Integer> keys = table.keySet();
int answer = -1;
for (Integer key : keys) {
answer = key;
}
return answer;
}
public int singleNumber(int[] nums) {
HashSet<Integer> check = new HashSet<Integer>();
for(int i = 0; i < nums.length; i++)
if(!check.remove(nums[i]))
check.add(nums[i]);
return check.iterator().next();
}
public class Solution {//重要借鉴于
public int singleNumber(int[] nums) {
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int num:nums){
if(map.containsKey(num)){
map.put(num,2);
}else map.put(num,1);
}
for(Integer key:map.keySet()){
if(map.get(key)==1){
return key;
}
}
return 0;
}
}
- 创建特定的hash表:Map<Integer,Integer>counts=new HashMap<Integer, Integer>();
左边的是key右边的是value
- Counts.countainsKey(num)——查找是否有关键值为num的映射,存在返回true
- Table.remove(k),若存在关键字为k的映射关系,则将其从表中移除
- Iterator迭代器:用于遍历集合
- 当创建完成指向某个集合或者容器的Iterator对象是,这是的指针其实指向的是第一个元素的上方,即指向一个空
- 当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针
- 当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异 常。
- remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常。
返回集合中第一个元素的方法:return check.iterator().next();