美文网首页
[python2] 57_1和为S的连续正数序列

[python2] 57_1和为S的连续正数序列

作者: cca1yy | 来源:发表于2019-08-26 21:51 被阅读0次
题目描述
# -*- coding:utf-8 -*-
class Solution:
    def FindContinuousSequence(self, tsum):
        # write code here
        if tsum < 3: #若给定tsum < 3,则没有合适的整数序列满足和小于3
            return []
        # 仍然使用左右两个指针,这两个指针限定了一个连续正数序列
        leftNum = 1
        rightNum = 2
        middleNum = (1 + tsum) / 2
        result = []
        while leftNum < middleNum: #由于正数序列从小到大逐个增加,因此大于和S的半数之后,之后的组合都已经遍历过,无需再次遍历
            sumNum = 0
            resultTemp = []
            for index in range(leftNum, rightNum + 1): #对两个指针内的正数序列求和
                resultTemp.append(index)
                sumNum += index
            if sumNum == tsum:
                result.append(resultTemp)
                rightNum += 1 #即使已经求得了和为S的正数序列,仍然不能停止搜索,继续增加右指针的值,寻找下一个合适的正数序列
            elif sumNum > tsum:
                leftNum += 1 #若左右指针限制的正数序列和大于S,则丢弃最小的数;若丢弃最大的数,则重复了上一步添加最大数的操作,不会满足
            else:
                rightNum += 1 # 若左右指针限制的正数序列和小于S,则将右指针后移一位,整数序列变长
        return result

相关文章

  • [python2] 57_1和为S的连续正数序列

  • Java日记2018-05-20

    第一题 和为 S 的连续正数序列 输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从...

  • 11-15题

    11、和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序...

  • 面试题57_2:和为S的连续正数序列

    和为s的连续正数序列 输入一个正数s,打印出所有何为s的连续正数序列(至少含有两个数)。 例如输入15,由于1+2...

  • 和为s的连续整数序列

    找出所有和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

  • 4.7 双指针问题(1)

    方法 暂无 注意点 暂无 目录 和为S的连续正数序列(很经典) 和为S的连续正数序列 小明很喜欢数学,有一天他在做...

  • 和为S的连续正数序列

    题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

网友评论

      本文标题:[python2] 57_1和为S的连续正数序列

      本文链接:https://www.haomeiwen.com/subject/ijrjectx.html