题目
找出所有和为S的连续正数序列
示例
Input:
100
Output:
[9, 10, 11, 12, 13, 14, 15, 16]
[18, 19, 20, 21, 22]
思路
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
for (int i = 1,j = 2,curSum = i + j; i < j && j < sum;) {
if (curSum < sum) {
j++;
curSum += j;
} else if (curSum > sum) {
curSum -=i;
i++;
} else {
ArrayList<Integer> list = new ArrayList<>();
for (int k = i; k <= j; k++) {
list.add(k);
}
result.add(list);
j++;
curSum += j;
curSum -=i;
i++;
}
}
return result;
}