Q41 和為S的連續正數序列 雙指標 滑動視窗

2021-10-04 07:36:06 字數 1093 閱讀 3476

題目描述

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

輸出描述:

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

/**思路:輸入sum=20(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

1,定義兩個指標,左指標從1開始,右指標從2開始迴圈開始

2,求和(1+2 = 3

3,如果判斷3小於20,右指標++,2變為3,求和3+3=6。迴圈一直到右指標=6,和為21。

4,else if 判斷21大於20,左指標++,1變為2,和減去左指標值,和為21-1=20。

5,else 和與輸入一樣,存數。 【再把右指標++,求和,求剩餘組合】

迴圈結束

*/

# -*- coding:utf-8 -*-

class

solution

:def

findcontinuoussequence

(self, tsum)

:# write code here

small =

1 big =

2 mid =

(tsum+1)

/2temp = small+big

res =

while smallif temp==tsum:

range

(small,big+1)

) big+=

1 temp+=big

elif tempbig+=

1 temp+=big

else

: temp-=small

small+=

1return res

41 和為S的連續正數序列

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

41 和為S的連續正數序列

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

41 和為s的連續正數序列

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