剑指offer面试题之和为S的两个数字
2016-03-19 17:27
393 查看
1,题目:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
2,想法:
(1),暴力枚举法,需要考虑每一对数,而且需要比较乘积以及记录位置,麻烦!
(2),利用递增排序的思想以及和相等的两个数,离得越远,两数乘积越小。
3,在牛客网上的编码为:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
2,想法:
(1),暴力枚举法,需要考虑每一对数,而且需要比较乘积以及记录位置,麻烦!
(2),利用递增排序的思想以及和相等的两个数,离得越远,两数乘积越小。
3,在牛客网上的编码为:
class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { //巧妙利用了两端指针,以及和相等的两个数,离得越远,乘机越小的思想 /*if (array.empty()) { return array; } unsigned int i,j; unsigned int length = array.size(); for (i = 0, j = length - 1; i < j;) { if (array[i] + array[j] > sum) { j--; } else if (array[i] + array[j] < sum) { i++; } else { vector<int> temp(2); temp[0] = array[i]; temp[1] = array[j]; return temp; } } vector<int> temp; return temp;*/ //一般的想法是如下暴力枚举 if (array.empty()) { return array; } unsigned int i,j; unsigned int length = array.size(); int multysum = 1000000; int leftlocate = 0, rightlocate = 0; //这个for循环可以改进下 /*for (i = 0; i < length; i++) { for (j = i + 1; j < length; j++) { if (array[i] + array[j] == sum) { if (array[i] * array[j] < multysum) { multysum = array[i] * array[j]; leftlocate = i; rightlocate = j; } } } }*/ for (i = 0; i < length; i++)//那么不需要记录位置和比较大小了,其实就是第一个思路 { for (j = length - 1; j > i; j--) { if (array[i] + array[j] == sum) { vector<int> temp(2); temp[0] = array[i]; temp[1] = array[j]; return temp; } } } vector<int> temp; return temp; /*if (leftlocate != rightlocate) { vector<int> temp(2); temp[0] = array[leftlocate]; temp[1] = array[rightlocate]; return temp; } else { vector<int> temp; return temp; }*/ } };
相关文章推荐
- 程序员互动联盟 编码大赛第一题
- JAVA开发面试笔记(二)
- JAVA开发面试笔记
- 剑指offer面试题之求数组中逆序对的个数
- 心里装着你,思念就很美(我要做一个文艺范儿的程序员)
- 正式作为程序员的第一天
- 程序员方面对于测试的一些实践介绍
- 致正在成长的程序员
- JAVA面试题——JAVA基础篇
- 30个程序员常去的网站广告排行榜,几个插件每周帮我过滤5000+的广告
- 这位女程序员8年总结-进步最快的后2年
- Java初级工程师面试题精选3
- 剑指offer面试题之数字在排序数组中的出现次数
- 来自一位女程序员8年的总结。
- 程序员的绘图利器 — Graphviz - zhangskd的专栏 - 博客频道 - CSDN.NET
- 面试经历---蘑菇街面试
- 程序员该如何装逼!
- 程序员真的是这个世上最奇怪的生物吗
- 程序员真的是这个世上最奇怪的生物吗
- 程序员真的是这个世上最奇怪的生物吗