LeetCode-167ナンバー2。合計II

記述
ここに画像を挿入説明
の分析
(1)ハッシュ(二分法は、第1のハッシュの前に目標値を下回る最大の要素を見つけることができる)
の昇順に配列の特徴(2)使用、使用した二重ポインタ方法。次の添え字へのスタートポインタのポイント 0 0 、配列の最後のエレメント・ポインタの終了。ポインタの二つの要素が標的とリターンに等しいとき、それが超えた場合、末尾ポインタマイナス1、第ポインタプラス1未満の場合。ファンタスティック。

コードの
ハッシュ

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        map<int, int> mp;
        for(int i = 0;i < numbers.size();i++){
            int t = mp[target - numbers[i]];
            if(t) return {t, i + 1};
            mp[numbers[i]] = i + 1;
        }
        return {-1, -1};
    }
};

ダブルポインタ

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        vector<int> res;
        int start = 0, end = numbers.size() - 1;
        while(start < end){
            int temp = numbers[start] + numbers[end];
            if(temp == target){
                return {start + 1, end + 1};
            }
            if(temp > target) end -= 1;
            else start += 1;
        }
        return {-1, -1};
    }
};
彼は189元の記事を発表 ウォンの賞賛107 ビュー70000 +

おすすめ

転載: blog.csdn.net/cprimesplus/article/details/103338021