题目一:

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

实现代码:

bool GetTwoNumWithDestSum(int* pData, int size, int destData, int& num1, int& num2)
{if (nullptr == pData || size < 2) return false;int back = 0; // back数据指向第一个int front = size - 1; // front指向最后一个while (back < front){if (pData[back] + pData[front] == destData){num1 = pData[back];num2 = pData[front];return true;}else if (pData[back] + pData[front] > destData) --front; //  front前移else ++back; // back后移}return false;
}

题目二:

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

实现代码:

void PrintContinousSequence(int beginData, int endData)
{for (int curData = beginData; curData <= endData; ++curData) std::cout << curData << " ";std::cout << std::endl;
}bool GetContinousSequence(int destData)
{bool hasFound = false;if (destData < 3) hasFound;int beginData = 1;int endData = 2;int middleData = (destData + 1) / 2;int curSum = beginData + endData;while (beginData < middleData)  // 注意这里的判断条件{if (curSum == destData){PrintContinousSequence(beginData, endData);curSum -= beginData;++beginData;hasFound = true;}else if (curSum > destData){curSum -= beginData; // 当前和扣除尾部++beginData; // 尾部向前移动}else {++endData; // 首部向前移动curSum += endData; // 当前和加上新首部}}return hasFound;
}

41. 和为s的两个数字VS和为s的连续正数序列(C++版本)相关推荐

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

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

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

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

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

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

  4. 和为s的两个数字与和为s的连续正数序列

    题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,则输出任意一对即可. 分析:选择数组的两端,将其相加,然后与s比较,如果比s大,则将指向 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 160630、五句话搞定JavaScript作用域
  2. 做项目需要使用的工具类
  3. tomact如何处理一个http请求?
  4. Spring-级联赋值
  5. Linux中高斯分布的参数设置,华为openGauss 配置操作系统参数
  6. Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(1)
  7. 剑指offer之 旋转数组的最小数字
  8. 阿基米德椭圆规原理,你看懂了吗?
  9. MyBatis generator 使用方式 小结
  10. python抽取指定url页面的title_Python使用scrapy爬虫,爬取今日头条首页推荐新闻
  11. python标准库的图像处理模块_PIL:Python Imaging Library(图像处理标准库)
  12. 最常见到的runtime exception 异常
  13. android自定义趋势图
  14. cmd copy命令 文件复制
  15. golang json 格式化输出对象
  16. 毕业相关-自动问答综述
  17. 这种股权结构一定要远离!
  18. Systemverilog中时间单位以及相关系统函数
  19. 宝塔面板重启mysql命令_宝塔linux面板命令大全
  20. 蓝牙nrf52832的架构和开发

热门文章

  1. 奇盾安防监控视频恢复案例
  2. Java练习 SDUT-2561_九九乘法表
  3. 安徽出台医疗大数据应用发展实施意见
  4. 基于WCF的RESTFul WebAPI如何对传输内容实现压缩
  5. Centos更新配置文件命令
  6. YII composer全局安装
  7. Android自定义View研究(六)--View中的原点坐标相关问题
  8. Tomcat优化之配置线程池高并发连接
  9. 14.卷2(进程间通信)---System V 共享内存区
  10. 64. 雇员管理系统