【剑指offer】【双指针】57.和为s的两个数字

双指针(对撞指针)

用i和j分别指向数组头和尾,sum = nums[i] + nums[j]
    如果sum > target, j--;
    如果sum < target, i++;
    如果sum == target,将nums[i]与nums[j]追加到数组中,break;
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) 
    {
        vector<int> res;
        int i = 0, j = nums.size() - 1;
        while(i < nums.size() && j >= 0)
        {
            int sum = nums[i] + nums[j];
            if(sum > target) 
                j--;
            else if(sum < target) 
                i++;
            else
            {
                res.push_back(nums[i]);
                res.push_back(nums[j]);
                break;
            }
        }
        return res;
    }
};

猜你喜欢

转载自www.cnblogs.com/Trevo/p/12730653.html