链接:
题意:
递增数组里找两个数组和为S,两个数字不能是同一个下标但是值可以相同
解:
基本双指针,前后夹鸡|XD
实际代码:
            
            
              c++
              
              
            
          
          #include<bits/stdc++.h>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target)
{
    int lg=nums.size(),l=0,r=lg-1;
    while(l<r)
    {
        while(l<r&&target-nums[l]<nums[r]) r--;
        while(l<r&&target-nums[l]>nums[r]) l++;
        if(target-nums[l]==nums[r]) return {nums[l],nums[r]};
    }
    return {1,1};
}
int main()
{
    vector<int> nums;int num,k;cin>>k;
    while(cin>>num) nums.push_back(num);
    vector<int>ans=twoSum(nums,k);
    for(auto a:ans) cout<<a<<endl;
    return 0;
}限制:
- 1 <= nums.length <= 10^5
- 1 <= nums[i] <= 10^6