剣指オファーインタビューの質問57。合計が2つの数値s [simple] -unordered_map、ダブルポインター

私の解決策:

1.最初のアイデアは、2つの数値の合計であるLeetCodeの最初の質問であり、unordered_mapも使用されます。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> m;
        vector<int> res;
        for(int i=0;i<nums.size();i++){
            if(m.count(target-nums[i])){
                res.push_back(target-nums[i]);
                res.push_back(nums[i]);
                return res;
            }
            else
                m[nums[i]]=1;
        }
        return res;
    }
};

2.これはインクリメンタル配列であり、ダブルポインターDafaを使用できることに注意してください。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i=0,j=nums.size()-1;
        vector<int> res;
        while(i<j){
            if(nums[i]+nums[j]==target){
                res.push_back(nums[i]);
                res.push_back(nums[j]);
                return res;
            }
            else if(nums[i]+nums[j]<target)    i++;
            else    j--;
        }
        return res;
    }
};

 

元の記事を65件公開 Like1 訪問数492

おすすめ

転載: blog.csdn.net/qq_41041762/article/details/105451431