singleNumber编程题

我没有想到异或的方式,主要思想是遍历数组的同时对数字进行计数,这里使用hasmap来计数,如果map中没有这个数字则加入map且置为1,否则将获得的值加一继续put进去
遍历完找到数量为一的数字即可。

代码如下

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Solution {
    public int singleNumber(int[] A) {
        int result = 0;
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i = 0; i < A.length; i++){
            if(map.get(A[i]) == null){
                map.put(A[i],1);
            }else {
                map.put(A[i], map.get(A[i])+ 1);
            }
        }
        for(Entry <Integer, Integer> entry: map.entrySet()){
            if(entry.getValue() == 1){
                result = entry.getKey();
                break;
            }
        }
        return result;
    }
}