>  Q&A  >  본문

알고리즘을 사용하여 해결한 Java 문제(해시맵 관련 문제)

leetcode의 첫 번째 질문, 이 방법은 O(n) 복잡도 솔루션을 달성할 수 있습니다

질문에는 int[]가 필요합니다(예: nums = [2, 7, 11, 15] 및 target = 9).
합계가 목표 값인 두 개의 숫자가 있는 경우, 예를 들어 nums[0] + nums[1] = 2 + 7 = 9
[0, 1]을 반환합니다.

다음 솔루션을 사용할 때 약간의 의문이 듭니다. 즉, 새로운 해시맵이 생성되었지만 값이 할당되지 않은 경우 이 경우 질문 요구 사항을 어떻게 달성합니까?

으아악
阿神阿神2702일 전588

모든 응답(3)나는 대답할 것이다

  • phpcn_u1582

    phpcn_u15822017-05-27 17:43:09

    for 루프의 map.put()이 할당이 아닌가요? ? ?

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-27 17:43:09

    질문에서는 두 숫자의 합이 목표 값과 주어진 값이어야 하며, 최소 두 숫자를 순회해야 합니다.
    (1) 먼저 초기화하면 알고리즘 시간 O(n)이 걸립니다. 값이 정확할 때 알고리즘 시간은 O(k), 0 이 상황의 실현은 다음과 같습니다.

      1) 먼저 지도를 초기화하고,
      2) 첫 번째 숫자 2를 탐색하고, 대상 - 2 = 9 - 2 = 7
      3) 지도에도 7이 있다고 판단하여 올바른 결과를 반환합니다.
    참고: 첫 번째 정확한 숫자로 이동

     
    (2) 초기화되지 않으면 정지하기 전에 두 번째 정확한 숫자로 이동합니다. 알고리즘 시간은 O(k)(1<k<=n)입니다.
    이 상황의 실현은 다음과 같습니다.

    으아아아

    회신하다
    0
  • 高洛峰

    高洛峰2017-05-27 17:43:09

    아니요Key 的情况下,HashMap.containsKey(Key) 返回的是 false 不包括 Key.

    으아악

    생각보다 널 포인터 오류가 발생하지 않습니다.

    회신하다
    0
  • 취소회신하다