佛山做企业网站,音乐网站禁止做浅度链接,宜昌企业网站建设,在线制作文字图片个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 和为S的两个数字_牛客题霸_牛客网输入一个升序数组 array 和一个数字S#xff0c;在数组中查找两个数#xff0c;使得他们的和正好是S#xff0c;如果。题目来自【牛客题霸】https://www.nowcoder.com/practice/390da4f7a… 个人主页Lei宝啊
愿所有美好如期而遇 和为S的两个数字_牛客题霸_牛客网输入一个升序数组 array 和一个数字S在数组中查找两个数使得他们的和正好是S如果。题目来自【牛客题霸】https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId13tqId11195ru/exam/oj
算法原理
双指针法不一定是说就要使用指针只是一种形象的说法在数组中我们一般将数组下标当做指针。我们定义left和rightleft赋值0right赋值右边界下标写一个循环当left小于right就继续循环在循环里我们比较left和right下标对应的数组的值的和与s的大小如果和大于s那么我们使right--如果大于我们left如果相等我们尾插进vector然后break返回。
图示 我们返回4和11记住不是返回下标而是数组的值。
代码
class Solution
{
public:vectorint FindNumbersWithSum(vectorint array,int sum) {int left 0;int right array.size() - 1;vectorint res; while(left right){if(array[left] array[right] sum){left;}else if(array[left] array[right] sum){right--;}else {res.push_back(array[left]);res.push_back(array[right]);break;}}return res;}
};