에서 A와 B 사이의 최단 거리 찾기 : 목록이 있습니다이 문제에 대한 가장 빠른 해결책이다 Node.js를
가와, A와 B 사이의 최단 거리를 찾아 B 배열에 [4, 8, 9, 10, 100]과 같은 배열의 값의 경우, 해당 배열의 두 값 사이의 최소 간격을 알아야합니다. 음수이면 절대 값을 사용하십시오.
에서 A와 B 사이의 최단 거리 찾기 : 목록이 있습니다이 문제에 대한 가장 빠른 해결책이다 Node.js를
가와, A와 B 사이의 최단 거리를 찾아 B 배열에 [4, 8, 9, 10, 100]과 같은 배열의 값의 경우, 해당 배열의 두 값 사이의 최소 간격을 알아야합니다. 음수이면 절대 값을 사용하십시오.
최저 차이
함수 closetPairs (도착) { 하자 모든 쌍을 찾기 정렬 된 배열의 요소의 쌍에 대해 최소의 차이를 찾아 결과 = []; let minDiff = Number.MAX_VALUE;
arr.sort((a, b) => {
return a - b;
});
// find the lowest difference for a pair of elements in the sorted array
for (let i = 0; i < arr.length - 1; i++) {
let currDiff = arr[i + 1] - arr[i];
if (currDiff < minDiff) {
minDiff = currDiff;
}
}
// find all the pairs with lowest differnece
for (let j = 0; j < arr.length - 1; j++) {
let sortedEleDiff = arr[j + 1] - arr[j];
if (minDiff == sortedEleDiff) {
result.push(arr[j + 1], arr[j]);
}
}
return result.sort((a, b) => {
return a - b;
});
}
let inputArr = [4, 8, 9, 10, 100];
console.log(closetPairs(inputArr)); // [ 8, 9, 9, 10 ]
배열을 먼저 정렬하면 인접한 두 요소간에 절대 값의 차이가 가장 작습니다. 원본 배열에 영향을 미치지하지 않으려면
let data = [4,8,9,10,100];
function findSmallDelta(data) {
data.sort();
let minDelta = -1;
for (let i = 0; i < data.length - 1; i++) {
let delta = Math.abs(data[i] - data[i+1]);
if (minDelta === -1 || delta < minDelta) {
minDelta = delta;
}
}
return minDelta;
}
console.log(findSmallDelta(data));
@kevin - 나는이 질문보다 더 복잡한 것처럼 보이는 이유 때문에 대답을 선택했을 때 왜 대답을 선택했는지 궁금합니다. – jfriend00
http://idownvotedbecau.se/noattempt/ – Pac0
'최고'무엇을 의미합니까? 귀하의 질문에 말한 방식에 따라 '가장 빠름'과 다른 것으로 보입니다. – Pac0
@kevin 두 개의 값 또는 두 개의 연속 된 값 사이? –