剑指 Offer 57. 和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
思路:
双指针
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>ans;
int left = 0,right = nums.size()-1;
while(left<=right)
{
if(target - nums[left] == nums[right]){//作差判断防止做和产生溢出
ans.push_back(nums[left]);
ans.push_back(nums[right]);
break;
}
else if(target - nums[left] < nums[right]){
right--;
}
else{
left++;
}
}
return ans;
}
};
复杂度分析:
时间复杂度:O(n);
空间复杂度:O(1);