劍指 Offer 57 - II. 和為s的連續正數序列

盎哈發表於2020-12-23

1、題目描述
輸入一個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。

示例 1:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
示例 2:
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]

2、實現
1)雙指標法:分別指向陣列左右兩端

public int[] twoSum(int[] nums, int target) {
	int left = 0;
	int right = nums.length - 1;
	int[] sumArr = new int[2];
	while(left < right) {
		int sum = nums[left] + nums[right];
		if(sum < target) {
			left++;
		}else if(sum > target) {
			right--;
		}else {
			sumArr[0] = nums[left];
			sumArr[0] = nums[right];
			break;
		}
	}
	return sumArr;
}

相關文章