太久沒寫雙指針了,都忘了,其實這個也不算,只是指定一個窗口,把從左到右中間的數都存起來,我還以爲二分做,結果。。。
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> > ans;
int l = 1, r = 2;
int val = 0;
while(l < r) {
int num = (l + r) *(r - l + 1) / 2;
if(num == sum) {
vector<int> tep;
for(int i = l; i <= r; i++) {
tep.push_back(i);
}
ans.push_back(tep);
l++;
}
else if(num > sum) {
l++;
}
else {
r++;
}
}
return ans;
}
};