剑指 Offer 57 - II. 和为s的连续正数序列
利用求和公式和滑动窗口:
求和公式:
滑动窗口:
时间复杂度O(N)
空间复杂度O(1)
class Solution {
public int[][] findContinuousSequence(int target) {
int i = 1, j = 2;
List<int[]> res = new ArrayList();
while(i < j) {
if(((i + j) * (j - i + 1 ) / 2) == target ) {
int[] temp = new int[j - i + 1];
int n = 0;
for(int k = i; k <= j; k++) {
temp[n] = k;
n++;
}
res.add(temp);
i++; //查找下一个解
}
else if(((i + j) * (j - i + 1 ) / 2) < target) j++;
else i++;
}
return res.toArray(new int[res.size()][]);
}
}