42、和为S的两个数字
来源:互联网 发布:mysql keepalived 编辑:程序博客网 时间:2024/05/29 02:02
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:对应每个测试案例,输出两个数,小的先输出。
自己的思路是正确的,通过上一题的双指针演化而来,然鹅。。细节方面的问题调了好久。。。
思路:定义两个指针,指向第一个和最后一个,判断和,小于第一个指针后移,大于则第二个指针前移。
代码:
class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { if(array.size()==0) return vector<int>(); vector<vector<int> > candidates; vector<int> res(2); int mulres = array[array.size()-1] * array[array.size()-1]; int i = 0; int j = array.size()-1; while(i < j){ if(array[i]+array[j]==sum){ if(array[i]*array[j] < mulres){ res[0] = array[i]; res[1] = array[j]; mulres = array[i]*array[j]; } //这里的i和j自加自减不加要陷入死循环的 //以及!!把i和j的自加自减加到上面里层的if里把自己给坑坏了。。。 i++; j--; } else if(array[i]+array[j] < sum){ i++; } else{ j--; } } if(res[0]+res[1]!=sum) return vector<int>(); return res; }};
阅读全文
0 0
- 【42】和为S的两个数字
- 42、和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 找出和为S的两个数字
- 和为S的两个数字
- 【5】和为s的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 牛客网 | 和为S的两个数字
- 和为s的两个数字
- 和为S的两个数字
- Python学习笔记(14) -- Python IDLE或shell中切换路径
- Excel排名函数PERCENTRANK计算逻辑
- 基于Tiny4412的电容屏多点触摸驱动程序的简单实现
- $.ajax()方法详解
- 数据挖掘 十大经典算法
- 42、和为S的两个数字
- 关于RecyclerView 25+的使用问题
- 关于x86中的CS 和 IP 寄存器
- android给View设置指定边框
- Java中的异常
- RestTemplate 中文乱码配置
- B
- Locality Sensitive Hashing(LSH)之随机投影法
- c 中强制转化详解