剑指 Offer 57 - II. 和为s的连续正数序列_CodingPark编程公园
发布日期:2021-06-29 15:49:25
浏览次数:2
分类:技术文章
本文共 1588 字,大约阅读时间需要 5 分钟。
和为s的连续正数序列
问题
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]
链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
解答
方法1
暴力版-双指针
class Solution: def findContinuousSequence(self, target: int) -> List[List[int]]: j = 1 fin = [] while j < target: i = j sum = 0 slave = [] for c in range(target): if sum == target: fin.append(slave) j = j + 1 break if sum > target: j = j + 1 break sum = sum + i slave.append(i) i = i + 1 return fin
方法2
优化版-双指针
class Solution: def findContinuousSequence(self, target: int) -> List[List[int]]: i, j, s, res = 1, 2, 3, [] while i < j: if s == target: res.append(list(range(i, j + 1))) if s >= target: s -= i i += 1 else: j += 1 s += j return res
二刷时
class Solution: def findContinuousSequence(self, target: int) -> List[List[int]]: res = [] for i in range(1, target): sum = i for j in range(i+1, target): sum = sum + j if sum > target: break elif sum == target: res.append([i for i in range(i, j+1)]) return res
转载地址:https://codingpark.blog.csdn.net/article/details/113327680 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月02日 23时00分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
正则表达式的数字实例
2019-04-29
OGNL表达式struts2标签“%,#,$”的区别
2019-04-29
struts2中<s:if>标签的使用
2019-04-29
js 刷新页面window.location.reload();
2019-04-29
【转】EasyUI 验证
2019-04-29
java开发时内存溢出问题
2019-04-29
【easyui】combobox 关于省市联动
2019-04-29
设置csdn皮肤方法,更改自己喜欢的老版皮肤
2019-04-29
Eclipse中无法查看JDK源码,解决方法
2019-04-29
Git操作常用口令
2019-04-29
IDEA去除掉虚线,波浪线,和下划线实线的方法
2019-04-29
MYSQL新特性secure_file_priv 读写文件
2019-04-29
idea中的一些常用快捷键
2019-04-29
最值得拥有的免费Bootstrap后台管理模板
2019-04-29
Django获取请求头信息和返回json数据
2019-04-29
Django项目实战----点击商品分类查询出商品和销量排行
2019-04-29
Django项目实战---搜索引擎Elasticsearch
2019-04-29