1. 程式人生 > >136. Single Number

136. Single Number

超過 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