Leetcode每日一题:167.two-sum-ii-input-array-is-sorted(两数之和Ⅱ-输入有序数组)

在这里插入图片描述
解题思路:双指针 l 和 r,分别指向头和尾,对于这个有序数组,如果number[l] + number[r] 比 target大,那么说明选择的r对应元素偏大,将指针 r 左移;如果小于target ,那么相应的将指针 l 右移,直到两者相等!

在这里插入图片描述

vector<int> twoSum(vector<int> &numbers, int target)
{
	vector<int> res;
	int len = numbers.size();
	if (len == 0)
		return res;

	int l = 0, r = len - 1;
	while (l < r)
	{
		if (numbers[l] + numbers[r] == target)
		{
			res.push_back(l + 1);
			res.push_back(r + 1);
			break;
		}
		if (numbers[l] + numbers[r] > target)
		{
			r--;
			continue;
		}
		if (numbers[l] + numbers[r] < target)
		{
			l++;
			continue;
		}
	}
	return res;
}

猜你喜欢

转载自blog.csdn.net/wyll19980812/article/details/107570662