和為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。現在把問題交給你,你能不能也很快的找出所有和...