劍指offer——和為s的連續正整數
阿新 • • 發佈:2018-12-14
由於連續正整數的個數不確定,所以用兩個角標,來控制個數,最後求和。
針對數值操作:
class Solution: def FindContinuousSequence(self, tsum): l, r, sum, res = 1, 2, 3, [] while l<r: if sum>tsum: sum -= l l += 1 else: if sum==tsum: res.append([i for i in range(l,r+1)]) r += 1 sum += r return res
針對陣列操作:
class Solution: def FindContinuousSequence(self,tsum): if tsum<3: return [] res,arr=[],[1,2] middle=tsum//2+1 while arr and arr[0]<middle: if sum(arr)<tsum: arr.append(arr[-1]+1) elif sum(arr)>tsum: arr.pop(0) else: res.append([i for i in arr]) arr.append(arr[-1] + 1) arr.pop(0) if not arr: return [] return res