Java/136. Single Number 只出現一次的數字
阿新 • • 發佈:2018-12-11
題目
程式碼部分一(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; } }
-
遍歷陣列,將陣列中的數字分別加入 map ,並記錄出現次數
-
遍歷 map.keySet() ,找出出現次數為 1 的key,並返回
-
沒有符合的則返回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; } }
-
遍歷陣列,將所有數字進行 ^ (按位異或)
-
在題目條件下,除了特殊數字,其他數字都出現兩次,可以相互消去,剩下的數字為所需數字
-
返回 res