주어진 숫자의 합이 되는 두 숫자가 있는지 확인
5352 단어 arrayjavascriptalgorithms
// In an unsorted array, check whether
// there are any two numbers that will
// sum up to a given number. Example:
// sumFinder([6, 4, 3, 2], 9) = true
// (because 6 + 3 equals 9.)
// sumFinder([6, 4, 3, 2], 2) = false
// (because nothing in the array plus
// another number in the array equals 2.)
자바스크립트 구현
function sumFinder(arr, num) {
let obj = {}
let diff
for (let i = 0; i < arr.length; i++) {
diff = num - arr[i]
if (obj[diff]) {
return true
} else {
obj[arr[i]] = true
}
}
return false
}
let sumFinderResult = sumFinder([6, 4, 3, 2], 7)
// returns true
let anotherSumFinderResult = sumFinder([6, 4, 3, 2], 1)
// returns false
솔루션에 대한 간단한 설명
함수의 지정된 대상 번호(인수 목록에서 자체적으로 제공한 번호)와 배열의 요소 간의 차이가 배열의 다른 요소와 같으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
솔루션에 대한 자세한 설명
function sumFinder(arr, num) {
let obj = {}
let diff
for (let i = 0; i < arr.length; i++) {
diff = num - arr[i]
if (obj[diff]) {
return true
} else {
obj[arr[i]] = true
}
}
return false
}
let sumFinderResult = sumFinder([6, 4, 3, 2], 7)
// returns true
let anotherSumFinderResult = sumFinder([6, 4, 3, 2], 1)
// returns false
함수의 지정된 대상 번호(인수 목록에서 자체적으로 제공한 번호)와 배열의 요소 간의 차이가 배열의 다른 요소와 같으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
솔루션에 대한 자세한 설명
구체적인 숫자를 사용하는 솔루션의 예
sumFinder
가 [6, 4, 3, 2]의 배열과 7이라는 두 개의 매개변수로 호출되었다고 가정해 보겠습니다.
sumFinder([6, 4, 3, 2], 7)
먼저 위의 코드 구현에 따라 빈 객체가 생성되고 diff 변수가 선언됩니다. 그런 다음 배열의 각 인덱스를 반복하는 for
루프가 생성됩니다. 첫 번째 인덱스는 6
를 가리킵니다. 라인:
diff = num - arr[i]
이제 번역:
diff = 7 - 6
// diff is now assigned 1
1의 키가 아직 객체에 존재하지 않기 때문에 arr[i]
또는 6
를 객체에 키로 삽입합니다.
이제 두 번째 루프 반복에서 num
는 7
입니다(num
는 절대 변경되지 않음). arr[i]
는 4
이므로 diff
는 3
입니다. 3
는 아직 객체의 키가 아니므로 arr[i]
또는 4
를 객체의 키로 추가합니다.
세 번째 루프 반복에서 num
는 7
, arr[i]
는 3
, 따라서 diff
는 4
입니다. 이번에는 4
가 객체의 키이므로 true
를 반환합니다. 배열에 주어진 숫자( 3
)로 합산되는 두 개의 숫자( 4
및 7
)가 있음을 성공적으로 파악했기 때문에 true를 반환합니다.
Reference
이 문제에 관하여(주어진 숫자의 합이 되는 두 숫자가 있는지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/colerau/checking-whether-there-are-any-two-numbers-that-will-sum-up-to-a-given-number-3gi9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
sumFinder([6, 4, 3, 2], 7)
diff = num - arr[i]
diff = 7 - 6
// diff is now assigned 1
Reference
이 문제에 관하여(주어진 숫자의 합이 되는 두 숫자가 있는지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/colerau/checking-whether-there-are-any-two-numbers-that-will-sum-up-to-a-given-number-3gi9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)