天天看點

劍指 Offer 57. 和為s的兩個數字(雙指針/哈希)c++

劍指 Offer 57. 和為s的兩個數字(雙指針/哈希)c++
劍指 Offer 57. 和為s的兩個數字(雙指針/哈希)c++
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i = 0,j = nums.size()-1;
        while(i < j){
            int s = nums[i]+nums[j];
            if(s<target){
                i++;
            }else if (s>target){
                j--;
            }else{
                return {nums[i],nums[j]};
            }
        }
        return {};
    }
};
           

哈希:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_set<int>s;
        for(int x:nums){
            if(s.count(target-x)){
                return {x,target-x};
            }
            s.insert(x);
        }
        return {};
    }
};