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