小明很喜歡數學,有一天他在做數學作業時,要求計算出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。現在把問題交給你,你能不能也很快的...