Given a non-empty array of integers nums
, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra space.
Example 1:
Input: nums = [2,2,1] Output: 1
Example 2:
Input: nums = [4,1,2,1,2] Output: 4
Example 3:
Input: nums = [1] Output: 1
Constraints:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
- Each element in the array appears twice except for one element which appears only once.
int singleNumber(vector<int>& nums) {
unordered_map<int, int> temp_map;
for (auto x : nums)
temp_map[x]++;
for (auto y : temp_map)
{
if (y.second == 1)
return y.first;
}
return -1;
}
其實我每個月都有給自己一個小小的目標, 就是念一本書, 隨便一本的那種, 標準寬鬆到就算是漫畫我都認....;
而本月的書單到比較正經點, 書名叫 " 正向專注力 ", 而藉由這篇文章, 我想分享一些讀書心得( ? )...., 雖然說這個BLOG是寫一些技術相關的, 但更多的我還是想要把這個當成是我的小日記一樣的東西, 所以如果只想看技術類的, 就到這邊跳過吧.
正文開始; 這本書的第一張節提到, 為什麼我們會心智脆弱 ?
作者指出, 這是因為我們與生俱來的本能習性, 就是執著於問題, 我們針對問題解決問題, 並且為了未知的事情恐懼, 我們享受成功的同時也害怕失敗帶來的後果, 所以我們瞻前顧後; 而人們鍛鍊肌肉的同時, 卻往往忘記鍛鍊內心, 導致內心肌群不夠強壯, 以至於在某些時候會出現脆弱的情形.
再來作者也提到, 如果你是那種腦裡全都是問題和負面想法的人, 其實你不是不正常, 你很正常, 只是有一天你會被你的正常給害死, 你的正常會吞噬掉你的快樂, 健康, 成功, 並且對你的人生造成無可挽回的阻礙.
而對抗以問題為中心的想法, 第一步驟就是要識別它, 作者指出, 如果我們心智只專注在某件特定事情上, 一直不斷的聚焦, 最後你就會無法採取行動, 難以加以改善, 舉個例子, 就像是這一篇的解法, 其實我很快就想出來最糟解了, 那就是幾個迴圈, 然後將重複的從vector去除掉, 這樣留下來的, 就會是單獨的了; 而當這個想法萌芽的時候, 其實工程師的慣性思維就會開始去想要怎麼樣實現, 然後振筆疾飛的開始Coding, 說真的, 幾年前的我也是這樣, 想出一個方式之後, 開始狂幹猛幹, 最後東補西改, 有多少Code是被注釋掉不用的.
然而, 近幾年開始隨者年紀的增長, 到也沒有這麼莽撞, 開始會懂得停下來先想有什麼方式了, 於是, 我從上面那個除掉, 想到既然我只要一個, 那是不是其他只要兩個的我都不要, 所以我是不是可以有一個地圖( map ), map<key: element, value : frequency> , 我先將所有元素放到key裡面, 然後去看每一個元素只要出現次數為1次的, 那就是我要的答案了啊 !!!
所以我只需要兩個步驟就可以了,
1. map<key: element , value : Frequency >
2. return the key whose value = 1
這樣就可以了, 所以才有了我想法裡面的最佳解.
這就是為什麼我會去翻翻其他非技術書的原因了, 透過書本的觸類旁通, 其實可以讓自己的思考變的更不一樣, 而我也認為大道至簡, 不論任何知識, 只要鑽研夠深, 就能觸類旁通; 雖然我也沒辦法告訴很具體的去告訴其他人這是有用的, 但對於我來說, 多念一本書, 多看看這些學者的嘔心力作, 到也是花最小成本得到最大收穫的一件高CP值的事情呀.
留言列表