滑動視窗演算法二 和為S的連續正數序列

2021-09-11 05:28:43 字數 929 閱讀 4171

輸出所有和為s的連續正數序列。

序列內按照從小至大的順序,序列間按照開始數字從小到大的順序

思路:

設定乙個滑動視窗,左邊left 右邊right

初始化 left=1 right=2

那麼這個視窗內的值和sum為(right+left)*(right-left+1)/2

比較sum與s的大小關係

如果sum=s 那麼符合條件的答案之一  l

——left++ right++ 因為下一組可能的答案不可能left不變  不可能right不變

如果sum>s

——那麼和過大 left++

如果sum——那麼和過小 right++

(因為left right都是從小到大遞增 所以考慮了所有情況)

迴圈一定會跳出 在試圖尋找sum=s途中 left=right

vector> findcontinuoussequence(int sum) 

res.push_back(one_res);

left++;

right++;

}else if(curelse //那麼左邊指標向後移 為什麼不是後面指標向前移 (因為這種情況 之前已經討論過)

//迴圈一定會跳出 即 left=right時候

}return res;

}

和為S的連續正數序列 滑動視窗

輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序。一開始只想到了最粗暴的窮舉解法 因為s 2後,數字相加一定大於s,所以迴圈只到s 2為止 public arraylist findcontinuoussequence int sum else if curs...

( )41 和為S的連續正數序列 滑動視窗

小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...

滑動視窗之和為S的連續正數序列

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的...