크러싱 취업 면접(DSA) - 두 숫자 합계
질문
난이도: 쉬움
개별 정수의 비어 있지 않은 배열과 목표 합계를 나타내는 정수를 받는 함수를 작성하세요. 입력 배열에 있는 두 숫자의 합계가 목표 합계에 도달하면 함수는 순서에 상관없이 배열에 반환해야 합니다. 두 숫자의 합계가 목표 합계에 도달하지 않으면 함수는 빈 배열을 반환해야 합니다.
목표 합계는 배열에 있는 두 개의 서로 다른 정수를 합산하여 얻어야 합니다. 목표 합계를 얻기 위해 단일 정수를 자체에 추가할 수 없습니다.
목표 합계까지 합산되는 숫자 쌍이 많아야 한다고 가정할 수 있습니다.
샘플 입력
array = [3, 5, -4, 8, 11, 1, -1, 6]
targetSum = 10
샘플 출력
[-1, 11] // the numbers could be in reverse order
최적의 공간 및 시간 복잡성:
O(n) 시간 | O(n) 공간 - 여기서 n은 입력 배열의 길이입니다.
생각
지루한 수학 교수님의 수업에 주의를 기울였다면 이 솔루션을 아주 쉽게 생각해낼 수 있었을 것입니다.
그래서 말하자
// 10 is the target sum
10 = x + y
// so
y = 10 - x
P.S: Hashmap is just a object in javascript or dictionary in python.
이제 우리가 할 일은 해시맵을 만들고 우리에게 주어진 배열을 반복하는 것입니다. 그런 다음 우리는:
10 - x
해결책
function twoNumberSum(array, targetSum) {
const nums = {} // this is the hashmap
for (let num of array){
if (nums[targetSum - num] ) return [targetSum-num, num]
nums[num] = true
}
return []
}
의심의 여지가 있습니까? 더 나은 솔루션이 있습니까? 아래에 의견을 남기고 토론을 시작합시다.
코딩에 대한 더 멋진 콘텐츠를 보려면 인스타그램에서 나를 팔로우하세요.
Reference
이 문제에 관하여(크러싱 취업 면접(DSA) - 두 숫자 합계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhruvindev/crushing-job-interviewsdsa-two-number-sum-2joa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)