前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >和为S的连续正数序列

和为S的连续正数序列

作者头像
名字是乱打的
发布于 2022-05-13 01:08:26
发布于 2022-05-13 01:08:26
26800
代码可运行
举报
文章被收录于专栏:软件工程软件工程
运行总次数:0
代码可运行
题目描述

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:

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

方法一,穷举法,一重遍历,一重while,终点为num/2+1

代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> arrs=new ArrayList<>();
        for(int i=1;i<(sum/2+1);i++){
            int s=0;
            int j=i;
            ArrayList<Integer> arr=new ArrayList<>();
            while (j<=(sum/2+1)){
                s+=j;
                arr.add(j);
                if (s==sum){
                    arrs.add(arr);
                    break;
                }else if (s<sum){
                    j++;
                }else if (s>sum){
                    break;
                }
            }
        }

        return arrs;
    }

方法二:数学方法

类似于之前的求有序数组中第一个和为n的两个数的位置 用两个索引定义一个窗口,窗口内的和为判断窗口移动的方向和位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
        //存放结果
        ArrayList<ArrayList<Integer> > result = new ArrayList<>();
        //两个起点,相当于动态窗口的两边,根据其窗口内的值的和来确定窗口的位置和大小
        int plow = 1,phigh = 2;
        while(phigh > plow){
            //由于是连续的,差为1的一个序列,那么求和公式是(a0+an)*n/2
            int cur = (phigh + plow) * (phigh - plow + 1) / 2;
            //相等,那么就将窗口范围的所有数添加进结果集
            if(cur == sum){
                ArrayList<Integer> list = new ArrayList<>();
                for(int i=plow;i<=phigh;i++){
                    list.add(i);
                }
                result.add(list);
                plow++;
            //如果当前窗口内的值之和小于sum,那么右边窗口右移一下
            }else if(cur < sum){
                phigh++;
            }else{
            //如果当前窗口内的值之和大于sum,那么左边窗口右移一下
                plow++;
            }
        }
        return result;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。 没多久
MickyInvQ
2021/12/07
3970
每天一道剑指offer-和为S的连续正数序列
和为S的连续正数序列 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包
乔戈里
2019/03/05
3800
[剑指offer] 和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他
尾尾部落
2018/09/04
5010
剑指offer——和为S的连续正数序列
概述 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
AI那点小事
2020/04/18
2720
剑指offer 和为S的连续正数列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他
vincentbbli
2021/08/18
1630
图解LeetCode——剑指 Offer 57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
爪哇缪斯
2023/05/10
1470
图解LeetCode——剑指 Offer 57 - II. 和为s的连续正数序列
LeetCode-面试题57-2-和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
benym
2022/07/14
1860
剑指offer | 面试题44:和为s的连续整数序列
设连续正整数序列的左边界 ii 和右边界 jj ,则可构建滑动窗口从左向右滑动。循环中,每轮判断滑动窗口内
千羽
2022/02/23
3920
剑指offer | 面试题44:和为s的连续整数序列
剑指offer(41-50)题解
既然有了通项公式,那么其实我们也能推出这样一个结论,sum如果在n区间长的连续区间内满足,那么这个n区间长的区间是唯一的,不会存在第二个n长的连续区间满足,从上图我们可以看出。 其次假设刚好区间满足情况,那么区间的元素数是不是只有奇数个和偶数个这两种情况。
萌萌哒的瓤瓤
2020/08/26
4740
剑指offer(41-50)题解
漫画:滑动窗口入门题目,没有之一
今天是小浩算法“365刷题计划”第83天 。昨天写了一篇感悟,没想到那么受欢迎。几百人转发,好几千人阅读,虚荣心得到了极大的满足。今天继续为大家分享一道经典面试题目。
程序员小浩
2020/04/15
3700
漫画:滑动窗口入门题目,没有之一
剑指offer 第十天
37.数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。 采用二分查找法 /* 方法一:时间复杂度O(n),不可选 */ public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length == 0) return 0; int count = 0; for(int i = 0 ; i < array.length ; i++)
10JQKA
2018/05/09
5740
剑指Offer-和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他
武培轩
2018/04/18
7850
二叉树中和为某一值的路径
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 (注意: 在返回值的list中,数组长度大的数组靠前)
名字是乱打的
2022/05/13
2560
TypeScript算法题实战——剑指 Offer篇(5)
在本文中,我们将使用TypeScript来解决剑指offer的算法题。这些问题涵盖了各种各样的主题,包括数组、字符串、链表、树、排序和搜索等。我们将使用TypeScript的强类型和面向对象的特性来解决这些问题,并通过实际的代码示例来演示如何使用TypeScript来解决算法问题。
中杯可乐多加冰
2024/09/20
940
【剑指offer:和为s的连续正数序列】巧用快慢指针
题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
心谭博客
2020/04/21
7460
剑指Offer题解 - Day54
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
chuckQu
2022/08/19
1540
腾讯课堂 IMWeb 七天前端求职提升营 Day 7
本次的系列博文主要是针对 腾讯课堂七天前端求职提升营 课程中,所推送的面试题目及编程练习的一次汇总,期间还包括三次直播课的分享,均由腾讯导师给大家讲解,该系列博文的发布已得到 IMWeb 前端学院助教的许可
Nian糕
2018/08/21
6340
腾讯课堂 IMWeb 七天前端求职提升营 Day 7
LeetCode通关:数组十七连,真是不简单
数组基本上是我们最熟悉的数据结构了,刚会写“Hello World”不久,接着就是“杨辉三角”之类的练习。
三分恶
2021/08/10
3910
一文带你把这几个经典求和问题按的死死的!
今天为大家带来三道求和问题,通过文字,图画,动图为大家解析,很容易就能读懂,每道题目都是经典题,大家快来打卡吧。
公众号袁厨的算法小屋
2020/11/27
3870
一文带你把这几个经典求和问题按的死死的!
牛客网 和为S的连续正数序列
题目: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就
2018/09/03
6140
推荐阅读
相关推荐
和为S的连续正数序列
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文