leetcode의 첫 번째 질문, 이 방법은 O(n) 복잡도 솔루션을 달성할 수 있습니다
질문에는 int[]가 필요합니다(예: nums = [2, 7, 11, 15] 및 target = 9).
합계가 목표 값인 두 개의 숫자가 있는 경우, 예를 들어 nums[0] + nums[1] = 2 + 7 = 9
[0, 1]을 반환합니다.
다음 솔루션을 사용할 때 약간의 의문이 듭니다. 즉, 새로운 해시맵이 생성되었지만 값이 할당되지 않은 경우 이 경우 질문 요구 사항을 어떻게 달성합니까?
으아악
for 루프의 map.put()이 할당이 아닌가요? ? ?
질문에서는 두 숫자의 합이 목표 값과 주어진 값이어야 하며, 최소 두 숫자를 순회해야 합니다. 이 상황의 실현은 다음과 같습니다.
(1) 먼저 초기화하면 알고리즘 시간 O(n)이 걸립니다. 값이 정확할 때 알고리즘 시간은 O(k), 0
1) 먼저 지도를 초기화하고,
2) 첫 번째 숫자 2를 탐색하고, 대상 - 2 = 9 - 2 = 7
3) 지도에도 7이 있다고 판단하여 올바른 결과를 반환합니다.
참고: 첫 번째 정확한 숫자로 이동
(2) 초기화되지 않으면 정지하기 전에 두 번째 정확한 숫자로 이동합니다. 알고리즘 시간은 O(k)(1<k<=n)입니다.
이 상황의 실현은 다음과 같습니다.
아니요
으아악Key
的情况下,HashMap.containsKey(Key)
返回的是false
不包括Key
.생각보다 널 포인터 오류가 발생하지 않습니다.