牛客剑指Offer面试题57:和为s的数字(题目1)
2020-01-13 01:27
211 查看
题目1描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
思路
1.暴力法:固定一个数字,然后遍历数组找到另一个数字使两数之和符合要求
2.前后指针法:声明两游标分别指向数组首元素和尾元素,不断判断两指针:
当二者和大于sum,后指针前移;
当二者和小于sum,前指针后移;
找到指定和的两元素,分别压入容器并返回结果
代码
class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { vector<int> result; if(array.empty()) return result; //声明前后指针 int pAhead = 0; int pBehind = array.size() - 1; while(pAhead < pBehind) { int sumCur = array[pAhead] + array[pBehind]; if(sumCur == sum) { result.push_back(array[pAhead]); result.push_back(array[pBehind]); break; } else if(sumCur < sum) ++pAhead; else --pBehind; } return result; } };
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 剑指offer面试题4:替换空格 相关题目 排序的数组A2中所有数字插入到A1并保持排序
- 【剑指offer】面试题 57:和为 S 的数字
- 牛客剑指Offer面试题59:队列的最大值(题目1:滑动窗口的最大值)
- 牛客剑指Offer面试题58:翻转字符串(题目2)
- 【剑指offer】面试题57(1):和为S的数字
- 牛客剑指Offer面试题58:翻转字符串(题目1)
- 牛客:剑指offer:数字在排序数组中出现的次数 (Java)
- 【剑指Offer】面试题38:数字在数组中出现的次数
- 剑指offer面试题4扩展题目
- 剑指offer题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 剑指offer——面试题8:旋转数组的最小数字
- 剑指Offer面试题57:删除重复链表 Java实现
- 【剑指offer】面试题11:旋转数组的最小数字
- 剑指offer-chapter2-面试题8-旋转数组的最小数字(java)
- 剑指offer面试题之和为S的两个数字
- 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
- 剑指offer-面试题40:数组中只出现一次的数字
- 【剑指offer】面试题39 数组中出现次数超过一半的数字
- 【剑指offer】面试题40-数组中只出现一次的数字
- 【剑指Offer学习】【面试题51:数组中重复的数字】