算法思想
双指针算法
双指针算法的条件:是否两个指针具有单调性,比如说一个指针向后移动,另一个指针也向后移动,就可以用双指针算法
算法步骤
声明两个指针,i表示起点,j表示终点,s表示区间中的和
如果s < sum,终点向后移动
如果相等了,输出答案
每次s都要减去i
Java代码
class Solution {
public List<List<Integer>> findContinuousSequence(int sum) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> res = new ArrayList<>();
int s = 1;
for(int i = 1, j = 1; i <= sum; i ++)
{
while(s < sum)
{
j ++;
s += j;
}
if(s == sum && j - i > 0)
{
for(int k = i; k <= j; k ++) res.add(k);
list.add(new ArrayList<>(res));
res.clear();
}
s -= i;
}
return list;
}
}