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

2022-08-24 01:24:13 字數 998 閱讀 6827

題目描述

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

輸出描述:

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

解題思路:

1、定義start = 1,end =2 ,然後和res = start+end;如果res == sum,則表示找到乙個序列,把start到end的值存入vector

2、如果大於的話,依次從小到大刪除start,res減少,直到相等或者結束

3、如果小於的話,增大end,再次執行迴圈

迴圈結束條件start == (1+sum)/2

1 #include 2 #include 3

using

namespace

std;45

class

solution

25result.push_back(tmp);

26tmp.clear();27}

28//

和大了,依次去掉小的值

29while(res > sum && start 3039

result.push_back(tmp);

40tmp.clear();41}

42}43//

小了,big變大

44 end++;

45 res +=end;46}

47return

result;48}

49};

50int

main()

5166 cout<68}

69return0;

70 }

劍指Offer 程式設計題41 和為S的連續正數序列

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

劍指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迴圈為增強魯棒性,...