题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
解题:双重循环
c++代码如下:
class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { int cj=99999; vector<int> res; for(int i=0;i<array.size();i++){ for(int j=i+1;j<array.size();j++){ if(array[i]+array[j]==sum&&array[i]*array[j]<cj){ res.clear();//注意要清空之前的元素偶 res.push_back(array[i]); res.push_back(array[j]); cj=array[i]*array[j]; } } }return res; } };
class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length; int i=0,j=len-1; while(i<j){ if(nums[i]+nums[j]>target){ j--; }else if(nums[i]+nums[j]<target){ i++; }else{ return new int[]{nums[i],nums[j]}; } } return new int[]{-1,-1}; } }