和為S的連續正數序列(python)

2021-09-24 12:20:26 字數 1041 閱讀 7455

和為s的連續正數序列

使用滑動視窗來求解這道題,核心思想就是設定乙個大小不固定的視窗來圈住目標列表,如果列表中的資料滿足條件就新增到答案中,否則就動態的移動該滑動視窗。

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

class

solution

:def

findcontinuoussequence

(self, tsum)

:"""

使用滑動視窗的方法來解決,

設定乙個動態的視窗,p_low指向視窗頭部,

p_high指向視窗尾部,視窗之間的值,為目標值。

如果目標值為tsum,那就是其中乙個解。否則移動視窗。

:param tsum:

"""#錯誤判斷處理,如果小於3的話 無解

if tsum <3:

return

#設定初始的滑動視窗大小

p_low =

1 p_high =

2 ans =

while p_low < p_high:

#計算滑動視窗現在圈中的大小

cur_sum =

sum(

range

(p_low,p_high+1)

)if cur_sum == tsum:

#找到一組解,並記錄到ans陣列中。

range

(p_low,p_high+1)

)#移動滑動視窗,並尋找下一組解。

p_high = p_high +

1elif cur_sum < tsum:

p_high = p_high +

1else

: p_low = p_low +

1return ans

if __name__ ==

'__main__'

: s = solution(

)print s.findcontinuoussequence(

100)

和為S的連續正數序列

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

和為S的連續正數序列

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

和為S的連續正數序列

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