剑指offer面试题目:和为 s 的两个数字
来源:互联网 发布:mac口红哪里买便宜 编辑:程序博客网 时间:2024/06/05 11:50
题目
输入一个递增排序的数组和一个数字 s,在数组中查找两个数,得它们的和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。
例如:输入数组{1 、2 、4、7 、11 、15 }和数字 15。由于 4+11 = 15 ,因此输出 4 和 11 。
分析
我们先在数组中选择两个数字,如果它们的和等于输入的 s,我们就找到了要找的两个数字。如果和小于 s 呢?我们希望两个数字的和再大一点。由于数组已经排好序了,我们可以考虑选择较小的数字后面的数字。因为排在后面的数字要大一些,那么两个数字的和也要大一些, 就有可能等于输入的数字 s 了。同样, 当两个数字的和大于输入的数字的时候,我们可以选择较大数字前面的数字,因为排在数组前面的数字要小一些。
代码
class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { vector<int> result; int length = array.size(); int start = 0; int end = length - 1; while (start < end) { if (array[start] + array[end] == sum) { result.push_back(array[start]); result.push_back(array[end]); break; } else if (array[start] + array[end] < sum) start++; else end--; } return result; }};
阅读全文
0 0
- 剑指offer面试题目:和为 s 的两个数字
- 【剑指Offer面试编程题】题目1352:和为S的两个数字--九度OJ
- 剑指offer-题目1352:和为S的两个数字 (2014.2.10)
- 剑指offer系列源码-和为S的两个数字
- 剑指offer--和为S的两个数字
- 《剑指offer》和为S的两个数字
- 剑指offer—和为S的两个数字
- 剑指·offer:和为S的两个数字
- 《剑指offer》——和为S的两个数字
- 剑指offer-和为S的两个数字
- 剑指offer:和为S的两个数字
- 【剑指offer系列】 和为S的两个数字___41
- 剑指offer(43):和为s的两个数字
- 剑指offer:和为S的两个数字
- 剑指offer 和为S的两个数字
- [剑指offer]和为S的两个数字
- 剑指offer(39)-和为S的两个数字
- 剑指offer题解 和为S的两个数字
- css best practice for big team and project
- com.android.ide.common.process.ProcessException: Failed to execute aapt解决办法
- BEM,SASS,LESS,bootstrap:如何有效地将这些方法,工具和框架聪明地整合?
- 在Ubuntu 中使用Source Code Pro字体
- 诸葛亮家书及名句
- 剑指offer面试题目:和为 s 的两个数字
- 前端开发梦中景象
- 两步让你的mobile traffic通过fiddler代理传送
- Lua的table库函数insert、remove、concat、sort详细介绍
- 选择结构
- bootstrap colorscheme以及theme自动生成
- ORA-01843:无效的月份
- LESS嵌套中的Mixins和classes
- Less的guards and argument matching