leetcode 兩數之和 題解

題目:

給定一個整數數組和一個目標值,找出數組中和爲目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

示例:

給定 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 的確是放在這裏的,記住別弄錯了
         }
         
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章