查找相差最小的数字
const findClosestNumbers = (arr = [1, 2, 3, 4, 5, 6, 7, 8, 9], target = 3) => { let left = 0; let right = arr.length - 1; let minDiff = Infinity; let closestNumbers = []; while (left <= right) { const mid = Math.floor((left + right) / 2); const diff = Math.abs(arr[mid] - target); if (diff < minDiff) { minDiff = diff; closestNumbers = [arr[mid]]; } else if (diff === minDiff) { closestNumbers.push(arr[mid]); } if (arr[mid] === target) { break; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return closestNumbers; };
const findClosestNumbers = (arr = [1, 2, 3, 4, 5, 6, 7, 8, 9], target = 3) => { const map = []; arr.forEach((item) => { const diff = Math.abs(item - target); if (!map[diff]) { map[diff] = []; } map[diff].push(item); }); return map[0] || map[map.findIndex((item) => !item) + 1]; };
以自己现在的努力程度,还没有资格和别人拼天赋