概述
文章目录
- 题目
- 解答
- 解法1:滑动窗口
题目
和为S的连续正数序列
解答
解法1:滑动窗口
使用滑动窗口来求解这道题,核心思想就是设定一个大小不固定的窗口来圈住目标列表,如果列表中的数据满足条件就添加到答案中,否则就动态的移动该滑动窗口。
# -*- coding:utf-8 -*-
class Solution:
def FindContinuousSequence(self, tsum):
"""
使用滑动窗口的方法来解决,
设定一个动态的窗口,p_low指向窗口头部,
p_high指向窗口尾部,窗口之间的值,为目标值。
如果目标值为tsum,那就是其中一个解。否则移动窗口。
:param tsum:
"""
#错误判断处理,如果小于3的话 无解
if tsum < 3:
return []
#设定初始的滑动窗口大小
p_low = 1
p_high = 2
ans = []
while p_low < p_high:
#计算滑动窗口现在圈中的大小
cur_sum = sum(range(p_low,p_high+1))
if cur_sum == tsum:
#找到一组解,并记录到ans数组中。
ans.append(range(p_low,p_high+1))
#移动滑动窗口,并寻找下一组解。
p_high = p_high + 1
elif cur_sum < tsum:
p_high = p_high + 1
else :
p_low = p_low + 1
return ans
if __name__ == '__main__':
s = Solution()
print s.FindContinuousSequence(100)
最后
以上就是孤独狗为你收集整理的和为S的连续正数序列(python)题目解答的全部内容,希望文章能够帮你解决和为S的连续正数序列(python)题目解答所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复