题目链接:
JZ41 和为S的连续正数序列
本题思路:
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
// 滑动窗口(双指针)
ArrayList<ArrayList<Integer> > result = new ArrayList<ArrayList<Integer> >();
// 初始化
int i = 1, j = 2, s = 3;
while(i < j) {
// s = sum 2记录连续整数序列
if(s == sum) {
ArrayList<Integer> res = new ArrayList<Integer>();
for(int k = i; k <= j; k++) {
res.add(k);
}
result.add(res);
}
// 判断滑动窗口内元素和与目标值的大小关系
// s > sum 向右移动左边界并更新元素和
// s = sum 1向右移动左边界
if(s >= sum) {
s -= i;
i++;
} else { // s <= sum 向右移动右边界并更新元素和
j++;
s += j;
}
}
return result;
}
}