Python剑指offer:和为s的连续整数序列
生活随笔
收集整理的這篇文章主要介紹了
Python剑指offer:和为s的连续整数序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
'''
輸入一個正數s,打印出所有和為s的連續正數序列(至少含有兩個數)。
例如,輸入15,由于1+2+3+4+5=4+5+6=7+8=15,所以打印三個連續
序列,1-5,4-6,7-8
'''class Solution:def FindContinuousSequence(self, num):# 要求至少是連續兩個正數,所以輸入的num不可能比3小if num < 3:return Nonesmall, big = 1, 2# 要求是連續的數,所以最大的數也只能是比num一半多一點middle = num // 2 + 1SumNum = 0 # 用來計算small和big以及之間的數的和while big <= middle and small < big:SumNum = self.CalculateSum(small, big)# 如果找到就打印if SumNum == num:self.PrintContinuousSequence(small, big)# 找到之后增加big來找下一個big = big + 1SumNum = self.CalculateSum(small, big)# 如果小就擴大序列 if SumNum < num:big = big + 1# 如果大就縮小序列if SumNum > num:small = small + 1# 用來計算small和big之間數的和def CalculateSum(self, small, big):Sum = 0for i in range(small, big+1):Sum = Sum + ireturn Sum# 用來進行打印 def PrintContinuousSequence(self, small, big):for i in range(small, big + 1):print(i)test = Solution()
test.FindContinuousSequence(15)
總結
以上是生活随笔為你收集整理的Python剑指offer:和为s的连续整数序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python剑指offer:数组中数值和
- 下一篇: 生成随机图片验证码