题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。

分析:选择数组的两端,将其相加,然后与s比较,如果比s大,则将指向数组最后的向前移一位,如果小于s,则指向数组的第一位的向后移一位,然后继续这个过程。如果等于s,则输出这两个数。

实现:

bool FindNumbersWithSum(int data[],int length,int sum,int* num1,int* num2)
{bool found=false;if(length<1||num1==NULL||num2==NULL)return found;int ahead=length-1;int behind=0;while(ahead>behind){long long curSum=data[ahead]+data[behind];if(curSUm==sum){*num1=data[behind];*num2=data[ahead];found=true;break;}else if(curSum>sum)ahead--;elsebehind++;}return found;
}

题目二:输入一个正数s,打印出所有和为s的连续正数序列(至少两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5,4~6,7~8。

分析:设置两个数来表示序列的最小和最大值small和big,small为1,big为2,当small到big之间的序列和小于s时,big+1,如果大于s,则small+1,然后继续。如果相等,则输出序列。循环停止的条件是small增加到(1+s)/2. 实现:

void FindContinuousSequence(int sum)
{if(sum<3)return;int samll=1;int big=2;int middle=(1+sum)/2;int curSum=small+big;while(small<middle){if(curSum==sum)PrintCountinuousSequence(small,big);while(curSum>sum&&small<middle){curSum-=small;small++;if(curSum==sum)PrintCountinuousSequence(small,big);}big++;curSum+=big;}
}void PrintContinuousSequence(int small,int big)
{for(int i=small;i<=big;++i)printf("%d  ",i);printf("\n");
}

转载于:https://blog.51cto.com/secondscript/1588074

和为s的两个数字与和为s的连续正数序列相关推荐

  1. 【剑指offer-Java版】41和为s的两个数字VS和为s的连续正数序列

    和为S的两个数字以及和为S的连续正数序列:输入是一个递增排序的数组,查找其中一对满足和为S的数,输出.如果有多对,输出其中一对 public void FindNumbersWithSum(int n ...

  2. [剑指offer]面试题41:和为s的两个数字VS和为s的连续正数序列

    面试题41:和为s的两个数字VS和为s的连续正数序列 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 代码如下: b ...

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

    为什么80%的码农都做不了架构师?>>>    题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可.   ...

  4. 【剑指offer{40-44}】和为S的连续正数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列、扑克牌顺子

    文章目录 和为S的连续正数序列 题目描述 C++代码 和为S的两个数字 题目描述 C++代码 左旋转字符串 题目描述 C++代码 翻转单词顺序列 题目描述 C++代码 扑克牌顺子 题目描述 C++代码 ...

  5. 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列

    题目描述 题目1: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输 ...

  6. python怎样连续输入两个数字_在python中生成连续的数字,同时输入不变

    显而易见的是将give变成一个对象而不是一个函数.*任何对象都可以通过定义^{}方法来调用.在 当我们在做的时候,你的代码可以简化很多,所以让我们这样做吧.在class Giver(object): ...

  7. 【面试题41】和为s的两个数字VS和为s的连续整数序列

    [题目描述] 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s.如果有多对数字的和等于s,输出任意一队即可. [解决方案] 设置前后指针,根据所指数字的和来移动前后指针,直 ...

  8. 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列

    一.和为S的连续整数序列: 1.题目: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100 ...

  9. 数据结构与算法--有序数组中找出和为s的两个数字

    有序数组中找和为s的两个数字 题目:输入一个递增排序的数组array, 和一个数字s, 在数组中找出两个数,使得这两个数的和是s,如果有多对,输出一对即可. 最简单方案 双循环,每次获取一个数据,和数 ...

最新文章

  1. ProgressDialog的使用-------------范例(学习笔记)
  2. textContent与innerText的不同(转)
  3. jQuery实例——展示表格点击变色、全选、删除
  4. 深度学习核心技术精讲100篇(十八)-巨量数据下美团是如何实现数据治理的?
  5. 项目: 推箱子图形化游戏 【C++ / C】
  6. ubuntu下chrome以代理模式启动
  7. delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
  8. [转] 以 async/await 为例,说明 babel 插件怎么搭
  9. oracle12c ora 12547,Oracle 12c DBCA出现PRCR-1079 ORA-12547 CRS-5017
  10. elf 取路径_c – 获取主要可执行文件的ELF标题
  11. 音视频开发(26)---H.264编码格式和视频编码的一些基本概念
  12. 一道很简单却也很容易入坑的java面试题
  13. 路由重发布Route Redistribution
  14. ipq_read(3)
  15. Sql中Output参数用法和分页存储过程
  16. U盘防止数据丢失有技巧
  17. gis 数据框裁剪_【更新80篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
  18. 【源码分享】-c++界面源代码分享
  19. python中的复数虚部_python复数的虚部怎么表达
  20. hdmi tv 信息 的edid_HDMI EDID解读

热门文章

  1. dubbo在idea下的使用创建 服务者,消费者 注册中心
  2. LeetCode-Reverse Integer
  3. 服务级后门自己做——创建服务
  4. 使用Xcode和Instruments调试解决iOS内存泄露(转)
  5. java 报文请求_http 请求报文和响应报文编写 (java socket实例)
  6. router vue 多个路径_vue-router 路径问题
  7. app前后台交互php_PHP丨前端网页是怎么跟后台进行数据交互的(实战)
  8. python3 rsa加密_【Python】Python3 实现 JS 中 RSA 加密的 NoPadding 模式
  9. stringbuffer的最大长度_Java中的String、StringBuffer和StringBuilder
  10. mfc 固定编辑框输入上限和下限_餐饮行业案例:固定工资、底薪提成改成这样,员工为自己拼命干...