57-2和为s的连续正数序列-python

我会带着你远行 2023-07-25 09:20 73阅读 0赞

题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。

  1. def find_continuous_seq(target):
  2. if target<3:
  3. return -1
  4. begin,end = 1,2
  5. res = []
  6. mid = target/2
  7. s = begin + end
  8. while begin<=mid:
  9. if s==target:
  10. temp = []
  11. i = begin
  12. while i<=end:
  13. temp.append(i)
  14. i+=1
  15. res.append(temp)
  16. end += 1
  17. s += end
  18. elif s<target:
  19. end+=1
  20. s+=end
  21. elif s>target:
  22. s-=begin
  23. begin+=1
  24. return res

  注:也是使用两个指针,只是这次在同一侧,向后侧移动,如果当前两个指针之内的数的和小于目标值,则后面指针右移;如果和大于目标值,则前面指针右移;如果和与目标值相等则加入保存的列表。优化提前终止为,前面指针大于目标值的一半时即可终止。

发表评论

表情:
评论列表 (有 0 条评论,73人围观)

还没有评论,来说两句吧...

相关阅读

    相关 S连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100