今天想著繼續往下解題,雖然仍然是從Easy Level裡面挑題目,但這次選的主題是有Hash Table的Tag,主要是想挑戰一下自己不太熟的類型。
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
這題題目上說輸入是非空的整數陣列,裡面除了其中一個元素只會出現一次之外,其他都會出現兩次。找出只有出現過一次的元素並輸出。
因為他有Hash Table的標籤,讓我想到的解法是按照陣列一個個拿出來,然後把元素裡的數字當成索引,數量作為Value。
不過我自己覺得我的Hash觀念還有些不太熟的,決定先查查Hash的基本觀念回顧一下再來寫程式碼。
我理解的Hash table有點像是先把資料分門別類,透過Hash Function做成一個歸納過的表格,
要查找東西的時候透過已經分類好的表格來搜尋就會很快速,但是最後的表格也不會是第一個數字作為第一個開始
參考1: 十一、从头到尾解析Hash表算法