首页 > 试题广场 >

和为S的连续正数序列

[编程题]和为S的连续正数序列
  • 热度指数:506584 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?

数据范围:
进阶:时间复杂度

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

输入

9

输出

[[2,3,4],[4,5]]
示例2

输入

0

输出

[]
头像 牛客题解官
发表于 2020-06-01 15:12:57
精华题解 题目的主要信息: 找出所有和为S的连续正数序列,序列至少包括两个数 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 举一反三: 学习完本题的思路你可以解决如下题目: JZ59. 滑动窗口的最大值 JZ57. 和为S的两个数字 方法一:枚举(前置方法) 思路: 我们可以从数字1开始枚举 展开全文
头像 Maokt
发表于 2021-07-07 15:29:21
精华题解 算法思想一:求和公式 解题思路: 设连续正整数序列的左边界 i 和右边界 j ,则此序列的 元素和 tsum 等于 元素平均值 (i+j)/2 乘以 元素数量 (j−i+1) ,即        &nb 展开全文
头像 鸠摩罗什
发表于 2021-06-20 09:04:19
精华题解 1、和为S的连续整数序列描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给 展开全文
头像 漫漫云天自翱翔
发表于 2021-06-18 22:11:12
精华题解 题解一:暴力思路时间复杂度:O(sumsqrt(sum))可以通过求和公式并代入化简至如下所以做多累加到 次,所以时间复杂度为O(sumsqrt(sum))空间复杂度:O(1),并未申请使用除结果以外的其他内存空间 class Solution { public: vector<vec 展开全文
头像 不努力就会倒数
发表于 2020-01-16 23:38:30
import java.util.ArrayList; /** 思路: 输入sum=20(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 1,定义两个指针,左指针从1开始,右指针从2开始 循环开始 2,求和(1+2 = 3 3,如果判断3小于20,右指针++,2变为3,求和 展开全文
头像 若星汉天空
发表于 2020-03-18 20:31:01
既然是数学问题,那么就用数学的方法来解决(笑) 无非就是一个等差数列求和的问题 等差数列求和公式: 其中: 代入可得: 并且 满足正数的条件,所以 可得: 算法复杂度: 接下来就可以愉快地写代码啦: function FindContinuousSequence(sum) { c 展开全文
头像 一叶浮尘
发表于 2019-08-27 12:56:04
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的 展开全文
头像 我要拿30w
发表于 2019-10-06 21:16:30
/** 思路: 1、双指针技术,就是相当于有一个窗口,窗口的左右两边就是两个指针 2、根据窗口内值之和来确定窗口的位置和宽度。 /
头像 ZhenhYang
发表于 2019-10-09 16:14:37
题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找 展开全文
头像 牛客129700802号
发表于 2021-04-17 22:59:37
偏数学思路 看大家都在双指针滑动窗口,要么就是遍历。 提供一个偏数学的思路。十行代码解决问题,复杂度为。 等差数列的数字个数为n,起始数字为a, 主要思路是在合适范围内遍历n,然后求解a判断是否为整数,若为整数则ok。 代码如下,具体公式推导在后边。 class 展开全文
头像 ̯͡↗Captain⚡
发表于 2019-08-27 20:17:36
一串数字的和 = 平均值 * 数字个数;连续数字的平均值分为两种情况: 奇数个数字:中位数、(整数) 偶数个数字:中间两个数的平均 (xx.5) 所以我们要找的就是:符合条件的平均值和数字个数: 平均值为整数,数字个数必定为奇数 平均值为xx.5, 数字个数必定为偶数 假设刚开始有i(0~s 展开全文
头像 godhands
发表于 2022-01-20 21:54:13
描述 题目描述 首先给定我们一个整数,然后问我们所有的连续序列的和等于这个整数,我们要把这些连续的序列输出出来 样例解释 样例输入 9 我们就是要找到,所有序列和为999的序列,序列长度至少为2,所以样例输出为 [[2,3,4],[4,5]] 题解 解法一:数学公式 实现思路 首先我们可以很轻松 展开全文
头像 稚园
发表于 2020-12-12 20:51:44
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的 展开全文
头像 ccจุ๊บ
发表于 2020-02-15 19:00:55
# -*- coding:utf-8 -*- class Solution: def FindContinuousSequence(self, tsum): # write code here # tsum小于3的直接不用考虑 if tsum& 展开全文