天天看點

力扣 面試題57 和為S的連續正數序列 *滑動視窗法

1、利用滑動視窗來做

i,j=1

小于t

j++

大于t

i++

i < t/2有序數組i = t/2下一個i+1就大于t/2加起來就不對了

力扣 面試題57 和為S的連續正數序列 *滑動視窗法

2、

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
    int i = 1; // 滑動視窗的左邊界
    int j = 1; // 滑動視窗的右邊界
    int sum = 0; // 滑動視窗中數字的和
    vector<vector<int>> res;

    while (i <= target / 2) {
        if (sum < target) {
            // 右邊界向右移動
            sum += j;
            j++;
        } else if (sum > target) {
            // 左邊界向右移動
            sum -= i;
            i++;
        } else {
            // 記錄結果
            vector<int> arr;
            for (int k = i; k < j; k++) {
                arr.push_back(k);
            }
            res.push_back(arr);
            // 左邊界向右移動
            sum -= i;
            i++;
        }
    }

    return res;
}
};
           

繼續閱讀