兩數(shù)之和

給定一個整數(shù)數(shù)組 nums 和一個目標值 target,請你在該數(shù)組中找出和為目標值的那 兩個 整數(shù),并返回他們的數(shù)組下標。
你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數(shù)組中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
    }
};

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/two-sum
著作權歸領扣網絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result;//聲明一個vector作為結果的返回值
        if (nums.size() < 2)
            return result;
        
        unordered_map<int, int> m;//創(chuàng)建unordered_map命名為m
        //unordered_map可理解為約等于哈希表,所以速度非???        for (int i = 0; i < nums.size(); i++)
        {
            m.insert(make_pair(nums[i], i));
            //將nums[i]和i作為key和value放入所創(chuàng)建的unordered_map中
            unordered_map<int, int>::iterator iter = m.find(target-nums[i]的);
            //創(chuàng)建一個iterator(迭代器)命名為iter
            //該iter為當前m中key為target-nums[i]的iterator(unordered_map中的key唯一)
            if (iter != m.end() && iter->second != i)
            {//iter != m.end() 表示iter = m.find(x)存在
             //iter->second != i  表示找到的數(shù)不是自己
                result.push_back(i);//返回自己的value
                result.push_back(iter->second);//返回目標value
                return result;
            }
        }
        
        return result;
    }
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容