136. Single Number
阿新 • • 發佈:2018-03-17
超過 tco 是我 single out 一個 pos hash 異或
原題鏈接:https://leetcode.com/problems/single-number/description/
這道題目剛看完半小時之後百思不得其解,然後本來打算看答案去了,無意間瞄了一眼“Related Topics”,發現裏面提到兩個詞“Hash Table”和“Bit Manipulation”。其中第一個哈希表我是沒想到怎麽用來解決這個問題,但是第二個位運算卻讓我靈光一閃,對啊,就是異或運算嘍!之所以能想到異或運算,是因為之前的一道面試題目也用到了它:http://www.cnblogs.com/optor/p/8271037.html
哈哈,那就愉快了寫下了 Beats 100% 的答案了:
/**
* Created by clearbug on 2018/2/26.
*/
public class Solution {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.singleNumber(new int[]{1, 2, 2, 3, 4, 5, 8, 7, 8, 5, 4, 3, 1}));
}
public int singleNumber(int[] nums) {
int res = nums[0];
for (int i = 1 ; i < nums.length; i++) {
res ^= nums[i];
}
return res;
}
}
然後,我又順便看了下官方答案。官方雖然提供了四種答案,但是前三種要麽是時間復雜度超過了要求,要麽是空間復雜度超過了要求,而第四種答案就是我想到的這種完美級別的答案了!
136. Single Number