劍指offer(57)-II
阿新 • • 發佈:2022-05-05
劍指offer(57)-II
劍指 Offer 57 - II. 和為s的連續正數序列
輸入一個正整數 target
,輸出所有和為 target
的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
示例 1:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
示例 2:
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
簡單滑動視窗
class Solution { public: vector<vector<int>> findContinuousSequence(int target) { vector<vector<int>>ans; //滑動視窗 int l=1;int r=2;int s=3; while(l<r){ //如果和==target 存入結果 if(s==target){ vector<int>res; for(int i=l;i<=r;i++){ res.push_back(i); } ans.push_back(res); } //如果和大於等於target 就需要縮短左邊界 讓s變小 if(s>=target){ s-=l;//更新s l++; }else{ //如果和小於target需要放大右邊界 r++; s+=r;//更新s } } return ans; } };