要求:rt
思路:滑动窗口
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
vector<vector<int>> v;
vector<int> tmp;
int i=1,j=2;
int sum=3;
while(i<j){
cout<<i<<j<<endl;
if(sum<target){
++j;
sum+=j;
}
else if(sum>target){
sum-=i;
++i;
}
else {
tmp.clear();
for(int k=i;k<=j;++k)
tmp.push_back(k);
v.push_back(tmp);
sum-=i;
++i;
}
}
return v;
}
};
优化:求和公式
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
vector<vector<int>> v;
vector<int> tmp;
int i=1,j=2;
int sum=3;
while(i<j){
sum=j*((j+1)/2.0)-(i-1)*(i/2.0);
if(sum<target){
++j;
}
else if(sum>target){
++i;
}
else {
tmp.clear();
for(int k=i;k<=j;++k)
tmp.push_back(k);
v.push_back(tmp);
++i;
}
}
return v;
}
};