# leetcode解題:(Easy) 136. Single Number 題目:[https://leetcode.com/problems/single-number/](https://leetcode.com/problems/single-number/) 描述:找出輸入的陣列中唯一一個沒有重複出現第二次的數字,時間複雜度與空間複雜度的限制分別為O(n)跟O(1) 解題思路(1):用HashSet紀錄出現過的數字,如果數字重複出現就從set中移除,最後set最後剩下的唯一一個元素就是只出現過一次的數字 程式碼: ```JAVA= class Solution { public int singleNumber(int[] nums) { HashSet<Integer> set = new HashSet<Integer>(); for(int num : nums) { if(set.contains(num)) set.remove(num); else set.add(num); } for(int num : set) return num; return 0; } } ``` 時間複雜度:O(n) 空間複雜度:O(n) 雖然leetcode有給過,但這個方法的空間複雜度並不符合題目要求,因此下面的才是正確解法 --- 解題思路(2):利用XOR的特性:A^B^A=B,將陣列中所有元素進行XOR計算後最後會剩下唯一沒有重複出現的數字 程式碼: ```JAVA= class Solution { public int singleNumber(int[] nums) { int result = 0; for(int num : nums) { result ^= num; } return result; } } ``` 時間複雜度:O(n) 空間複雜度:O(1) ###### tags: `leetcode` `easy` `map/set`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up