1. 程式人生 > >Java/136. Single Number 只出現一次的數字

Java/136. Single Number 只出現一次的數字

題目

程式碼部分一(17ms 26.66%)

class Solution {
    public int singleNumber(int[] nums) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i = 0; i < nums.length; i++){
            map.put(nums[i], map.getOrDefault(nums[i], 0)+1);
        }
        for(int temp : map.keySet()){
            if(map.get(temp) == 1)
                return temp;
        }
        return 0;
    }
}
  1. 遍歷陣列,將陣列中的數字分別加入 map ,並記錄出現次數

  2. 遍歷 map.keySet() ,找出出現次數為 1 的key,並返回

  3. 沒有符合的則返回0

程式碼部分二(1ms 99.99%)

class Solution {
    public int singleNumber(int[] nums) {
        int res = 0;
        for(int i = 0; i < nums.length; i++){
            res ^= nums[i];                    // nums[0] ^= nums[i];
        }
        return res;
    }
}
  1. 遍歷陣列,將所有數字進行 ^ (按位異或)

  2. 在題目條件下,除了特殊數字,其他數字都出現兩次,可以相互消去,剩下的數字為所需數字

  3. 返回 res