链接:
题意:
递增数组里找两个数组和为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