【LeetCode1】【雜湊】每日一題 day30

lyx_2016發表於2020-10-03

給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> cha;
        vector<int> ans;
        int size = nums.size();
        
        for (int i = 0; i < size; i++)
        {
            if (cha.count(nums[i]))
            {
                ans.push_back(i);
                ans.push_back(cha[nums[i]]);
                break;
            }
            if (!cha.count(target - nums[i]))
            {
                cha[target - nums[i]] = i;
            }
            
        }
        return ans;
    }
};

菜的摳腳…

這道題要注意的是:
1、把求和轉化成求差
2、邊遍歷邊處理邊查詢
3、把元素放進map裡這個操作應該往後放,放置它對查詢產生影響

很慢,等我忙完這一節就把做的慢的題全部想想怎麼能優化…

相關文章