劍指offer41 和為S的連續正數序列

2021-10-19 14:37:04 字數 686 閱讀 2598

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

輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序

思路1:暴力

思路2:滑動視窗

1.初始化乙個視窗,視窗大小為2

2.如果當前視窗和比目標值小,則加上右邊界,右邊界再擴張1 ;

如果當前視窗和比目標值大,則減去左邊界,再將左邊界右移1;

如果相等,則輸出,再將左邊界向右移動1,右邊界重置為左邊界的下乙個,並將當前和定為左邊界的值。

3.當左邊界超過目標的中值時中止迴圈

class

solution

else

if(s>sum)

//大於則左邊縮小

else

ret.

push_back

(v);

l++;//重新從下乙個開乙個視窗大小為2的滑動視窗

r=l+1;

s=l;}}

return ret;}}

;

劍指offer 41 和為S的連續正數序列

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

劍指Offer 41 和為S的連續正數序列

雙指標法,指標均單向移動,求和 記憶體超限 您的程式使用了超過限制的記憶體,case通過率為0.00 class solution result.push back tmp else if tempsum對照書上的 感覺自己的 思路沒有問題,檢視答案區發現了幾個問題 1 while迴圈為增強魯棒性,...

劍指Offer 41 和為S的連續正數序列

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