题目描述
给定一个数组,找出数组中两个和为sum且在所有和为sum的数值对中乘积最小的数值对。
分析
将数组从小到大排序,定义两个指针,一个指向数组头i,一个指向数组尾j,当arr[i]+arr[j]>sum,将j指针向左移动,arr[i]+arr[j]<sum,将i指针向右移动。
function sum(arr, s) {
arr.sort((a, b) => {
return a - b;
});
var i = 0;
var j = arr.length - 1;
var sum;
while (1) {
sum = arr[i] + arr[j];
if (sum > s) {
j--;
} else if (sum < s) {
i++;
} else {
return arr[i] + '----' + arr[j];
}
}
}