和为s的两个数字VS和为s的连续正数序列

量化投资之工具篇一:Backtrader从入门到精通(1)-手把手教你零基础实现一个策略案例 Backtrader是重要的量化框架,本文记录学习该框架的笔记,内容主要基于Backtrader的网站指导文档。虽然该框架目前用于量化投资领域,但是可以作为数据处理的基本架构,进行改造后用于各种数据的处理,尤其适用于对原始数据处理完成后应用一定的策略进行预测以及可视化处理。 1、简介 Backtrader的特点,就是两点: 1、易于使用; 2、参见第1条。 那么如何使用Backtrader呢?比把大象装进冰箱复杂点,一共4步: 创建一个Cerebro引擎: 加入一个Strategy... 阅读详情
题目一:
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。要求O(n)。

分析:
增加两个指针,分别指向数组的第一个和最后一个元素,如果指针指向的两个元素之和大于s,后面的指针向前移动,如果指针指向的两个元素之和小于s,则前面的指针向后移动。只需要遍历数组一次,所以时间复杂度为O(n)。

class Solution
{
public:
    bool FindNumbersWithSum( vector<int> data, int sum, int *num1, int *num2 )
    {
        int i = 0, j = data.size()-1;
        if (num1 == NULL || num2 == NULL)
            return false;
        while ( i < j )
        {
            int tempSum = data[i] + data[j];

            if ( tempSum == sum )
            {
                *num1 = data[i];
                *num2 = data[j];
                return true;
            }
            else if ( tempSum < sum )
            {
                i++;
            }
            else
            {
                j--;
            }
        }
        return false;
    }
};

int main( void )
{
    vector<int> data = { 1, 2, 4, 7, 11, 15 };
    //vector<int> data = {};
    int num1, num2;
    Solution sos;
    cout << sos.FindNumbersWithSum( data, 15, &num1, &num2 ) << endl;
    cout << num1 << " " << num2 << endl;
    return 0;
}
题目二:
输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。

分析:
增加两个指针,这两个指针指向确定数组中的一个区间,如果这个区间中的数字之和大于s则减小区间大小,否则增加区间大小。

class Solution
{
public:
    vector< vector<int> > FindContinuousSequence( int sum )
    {
        if ( sum < 3 )
            return vector< vector<int> >();
        vector< vector<int> > result;
        int start = 1, end = 2;
        int curSum = start+end;

        while ( start <= sum/2 && end <= sum )
        {
            if ( curSum == sum )
            {
                vector<int> temp;
                for ( int i = start; i <= end; i++ )
                {
                    temp.push_back( i );
                }
                result.push_back( temp );
            }
            while ( curSum > sum && start <= sum/2 && end <= sum )
            {
                curSum -= start;
                start++;
                if ( curSum == sum )
                {
                    vector<int> temp;
                    for ( int i = start; i <= end; i++ )
                    {
                        temp.push_back( i );
                    }
                    result.push_back( temp );
                }
            }
            end++;
            curSum += end;
        }
        return result;
    }
};

int main( void )
{
    Solution sos;
    vector< vector<int> > result;
    result = sos.FindContinuousSequence( 15 );
    for ( int i = 0; i < result.size(); i++ )
    {
        for ( int j = 0; j < result[i].size(); j++ )
        {
            cout << result[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
Unity实战篇 | 教你怎样将Unity的启动Logo 设置成 自己制作的 帧动画 上一篇文章我们讲了怎样在不购买专业版的情况下自定义Unity的启动Logo。 那本篇文章就来介绍一下,怎样在去除默认Logo的前提下制作自己的启动动画! 阅读详情

相关推荐

北京联通IPTV组播实战:OpenWRT软路由配置全解析

本文详细解析了在北京联通IPTV环境下,利用OpenWRT软路由和udpxy工具实现组播转单播的实战配置。内容涵盖网络接口设置、防火墙规则、udpxy安装配置、直播源M3U文件处理以及全平台播放指南,帮助用户无需机顶盒即可在家庭局域网内任何设备上流畅观看电视直播。

weixin_29313547的博客 1413

剑指offer刷题————和为s的两个数字VS和为S的连续正数序列

题目1: 问题重述: 题目:输入一个递增排序的数组和一个数字s。在数组中查找这两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 例如:输入数组{1,2,4,7,11,15}和数字14。由于4+11=15,因此输出4和11。 思路解析: 我们可以这样,设置两个指针head和tail,head在数组头部,tail在数组末尾。由于数组是递增的,如果两个head对应的值加上tail对应的值如果小于s,那么只能head向后遍历,如果大于s,只能tail向前遍历,按照这种逻辑搜索,直

李志杰的博客 191

PDDL入门

PDDL的组成部分 Objects:对象,世界上我们感兴趣的事物。 Predicates:谓词,我们感兴趣的事实(例如对象的属性),可以为真,也可以为假。 An initial state:初始化状态,我们开始所处的世界状态,即开始时为真的事物。 Goal specification:目标状态,我们想要结束的世界的状态,即我们希望最终成为真实的事情。 Actions/Operators:动作/操作,改变世界状态的方式,即发生的事情改变了事实。 PDDL语法 PDDL 文件的扩展名通常是.pddl 要

工控小白2021的博客 4821

剑指Offer:和为s的两个数字VS和为s的连续正数序列

题目一:输入一个递增排序的数组和一个数字 s,在数组中查找两个数,得它们的和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;例如输入数组 {1,2,4,7,11,15} 和数字 15。由于 4+11=15,因此输出4和11 。 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp

带翅膀的猫的博客 4073

半导体设备微振动控制:天棚阻尼PID与SIMULINK建模实战

半导体制造设备对微振动的敏感度已进入纳米级,光刻机、量测设备等一旦遭遇超过VC-C振动准则的扰动,便会出现套刻误差或检测误判。主动隔振技术通过传感器、控制器与执行器形成闭环,能有效抑制低频共振,其中天棚阻尼控制因物理概念清晰、鲁棒性强而成为工程首选。结合MATLAB/SIMULINK建模,可在设计阶段完成系统性能边界评估与参数整定,再通过C代码生成与FMU导出实现算法向控制器和跨平台仿真迁移。本文从VC-C指标拆解出发,依次讲解天棚阻尼PID控制原理、两自由度被控对象建模、控制增益估算、仿真验证方法,并给出

weixin_29169505的博客 326

从0到1,快速理清 | DeepSeek Harness

DeepSeek推出自研Harness开发平台,主打"一切皆插件"理念,将AI执行能力模块化为可自由组合的插件体系。带你从0到1,快速了解开发链路。

IT学习博客 688

A-和为s的两个数字VS和为s的连续正数序列

题目41-1:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 分析:   先选定第一个数字,然后将后面的数字依次遍历求和,并与需要的数字比较,需要n-1次,如果第一个数字不行,选择第二个,依次遍历求和。。。。需要n^2次,时间复杂度比较高,但也是可以的,在面试中,如果没有更好的办法写这个也是可以的,毕竟要比交白卷好得多,这...

weixin_44331516的博客 129

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

剑指offer:和为s的两个数字VS和为s的连续正数序列(java)

题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多个数字的和等于s,输出任意一对即可。 例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11.     只要想到一个办法,应聘者就可以立马告诉面试官,即使这个办法不一定是最好的。比如这个问题,很多人会立即能想到O(n2)的方法,也就是先在数组中固定一个数字,

abc7845129630的博客 658

【温室气体】GOSAT 数据产品

【温室气体】GOSAT 数据产品

WW、forever的博客 238

汽车IVI中控开发入门及进阶(九):显示屏

显示屏Display panel和触控屏Touch panel,可以说随着汽车四化的进展,屏越来越多,越来越大,越来越高清,成为IVI中控、智能座舱系统的重要组成部分。比如如下一个电阻触摸屏。正文:显示屏主要功能就是显示,车载内容和信息的传递全靠显示屏,目前车载显示屏的种类可以分为:LCD液晶显示屏(TFT(薄膜晶体管)驱动的有源矩阵液晶显示,再细分IPS、TFT、SLCD,这几个子类)、LED显示屏(用 LED发光二极管作为背光光源)、OLED 显示屏。

码农17年的博客 2527

【面试题041】和为s的两个数字VS和为s的连续正数序列

【面试题041】和为s的两个数字VS和为s的连续正数序列 题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 思路一: 现在数组中固定一个数字,再依次判断数组中其他的n-1个数字与它的和是不是等于s, ——时间复杂度O(n) 思路二: ...

A201241302241的博客 143

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1233

和为S的两个数字VS和为S的连续正数序列

题目一:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得它们的和正好是S。如果有多对数字的和等于S,输出任意一对即可。例如:输入数组{1,2,4,7,11,15}和数字15,输出应该是4和11.思路分析:看到这个题最开始我就想到了,从该数组的第一个数字开始固定数字,求该数字和其余的n-1个数字之和,找到S即可,但是这个方法的时间复杂度是O(n^2).有一种简单的思想,我们可以定义连个指...

cherrydreamsover的博客 209

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

剑指Offer:和为 S 的两个数字 VS 和为 S 的连续正数序列

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 vector FindNumbersWithSum(const vector& Array, const int& sum) { vector result; if(Array.size() < 2 || sum < Array[0] + Array[

庚午步雲 521

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

和为s的两个数字VS和为S的连续正数序列

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 import java.util.ArrayList; /** * 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 * * @author pomay * */ publi

pomay的博客 445

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

和为s的两个数字 VS 和为s的连续正数序列

//和为s的两个数字 VS 和为s的连续正数序列 void TwoNumSum(int num[],int s,int len) { int i, j; for (i = 0; i < len; i++) { for (j = i + 1; j < len; j++) { if (num[i] + num[j] == s) { cout << num[i] <<

gfgdsg的专栏 495

和为S的两个数字VS和为s的连续正数序列

  题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 思路整理一下:最初我们找到数组的第一个数字和最后一个数字。首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数...

weixin_34365635的博客 130

剑指offer之和为S的两个数字 vs 和为S的连续正数序列

一、和为S的两个数字 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。 解题思路 数列满足递增,设两个头尾两个指针i和j, 若ai + aj == sum,就是答案(相差越远乘积越小) 若ai + aj &gt; sum,...

CL_Fighting 248

剑指Offer之 - 和为s的两个数字 VS 和为s的连续正数序列

题目: 1、输入一个递增排序的数列和一个数字s,在数组中查找两个数,使得它们的和正好是s,如果有多对数字的和等于s,输出任意一对即可。类似3Sum和4Sum。分别参考:http://blog.youkuaiyun.com/u012243115/article/details/41361781 和 http://blog.youkuaiyun.com/u012243115/article/details/41719831

灯火阑珊处 471

【剑指offer之和为s的两个数字VS和为s的连续正数序列】

【题目一】:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。例如输入数组{1,2,4,7,11,15}和数字15.由于4+11 = 15,因此输出4和11。 【技能get &&思路】:                            【代码】: #include using namespace std;

herongwei 的 BLOG 1072

面试题41:和为s的两个数字VS和为s的连续正数序列

题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多个数字的和等于s,输出任意一对即可。 例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11. 在面试的时候,很重要的一点是应聘者要表现出很快的反应能力。只要想到一个办法,应聘者就可以立马告诉面试官,即使这个办法不一定是最好的。比如这个问题,很多人会立即能想

ddd_1206的博客 368

[剑指offer]---41 和为S的两个数字 VS 和为S的连续正数序列

温馨 小提示:如果代码看不懂,不妨拿出纸和笔,找几个例子,多走几遍程序, 再搜索一下相关的博客,慢慢的就加深理解了。 和为S的两个数字 题目: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 代码思路: 法一:哈希法。 用一个H...

十里の清风 252
上一篇: 数组中出现一次的数字
下一篇: 翻转单词顺序VS左旋转字符串
Findway_
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值