题目:输入一个递增排序的数组,和一个数字s,在数组中查找两个数,使得他们的和正好是s,如果有多对数字的和等于s,输出两个数的乘积最小的。
思路:
假如s = 10;
Left 0
Rigth 11
大于 s 则 right左移
小于 s left右移
function findNumbersWithSum(array, sum) {
if (array && array.length > 0) {
let left = 0,
right = array.length - 1;
while (left < right) {
const s = array[left] + array[right];
if (s < sum) {
left++;
} else if (s > sum) {
right--;
} else {
return [array[left], array[right]]
}
}
}
return [];
}
以上是某大佬实现的接下来才是我的学以致用
判断数组的最后一个值和前面是否有重复的
findNumbersWithSum(array) {
if (array && array.length > 0) {
let left = 0,
right = array.length - 1;
while (left < right) {
const a = array[left].split("|")[0]
const b = array[right].split("|")[0]
const s = array[left] + array[right];
if(a!=b){
left++
}
else {
array.splice(left,1)
return array
}
}
}
return [];
}