leetcode 兩數之和 題解
阿新 • • 發佈:2018-12-18
題目:
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
個人感覺:
第一次看到這個題目,有點懵逼,因為以前沒做過什麼題目,第一個想法就是雙重迴圈,然而我以前寫過的題目都是有標準輸入和輸出的,這玩意怎麼搞?沒辦法,看題解吧,把題解寫熟練,直到可以熟練地自己寫出來。但是仍然有很多地方會出錯。
程式碼:
class Solution //實不相瞞,這個地方的Solution一個字母都不能錯,首字母大寫呀 { public: vector<int> twoSum(vector<int>& nums,int target) //這裡的twoSum一個字母都不能錯,S大寫呀 { unordered_map<int,int> m;//建立一個無序對映 vector<int> res;//這是我們要返回的結果 for(int i=0;i<nums.size();i++)//無序對映建立過程 { m[nums[i]]=i; } for(int i=0;i<nums.size();i++) { int t=target-nums[i]; if(m.count(t)&&m[t]!=i)//這裡的count函式是用來確定m中是否有t這個數,若有則m.count值為1,否則m.count為0; { res.push_back(i); res.push_back(m[t]);//這裡的push_back()是用來壓入數值的 break; } } return res; //return res 的確是放在這裡的,記住別弄錯了 } };