>

O (n) 시간에 20을 곱한 두 개의 숫자를 얻으려고합니다. 여기서 해시 맵을 사용하려고합니다.

내 테스트 사례는 와이즈 비즈  

1과 4 여야하는 배열 인덱스 1과 5를 제공합니다.

int arr[] = {2, 4, 1, 6, 5, 40, -1};

public static int[] multToTwenty(int arr[]) { HashMap<Integer, Integer> hm = new HashMap<>(); for (int i = 0; i < arr.length; i++) { if (hm.containsKey(20 / arr[i])) { return new int[]{hm.get(20 / arr[i]), arr[i]}; } hm.put(arr[i], i); } return new int[]{-1, -1}; // Nothing found }

  • 답변 # 1

    20/i  정수 나누기이므로 j=20/i  그 i*j == 20 를 의미하지 않습니다 . 추가 확인을 추가해야합니다 :

    if (20 % arr[i] == 0 && hm.containsKey(20 / arr[i]))
    
    

    그리고 코드에 또 다른 오류가 있습니다 : a[i] 요소를 반환합니다  인덱스 i 대신 . 돌아와야합니다

    new int[]{hm.get(20 / arr[i]), i};
    
    

  • 이전 validation - 레일즈 콜백이 작동하지 않습니다
  • 다음 scalamock - 확인이 마지막 일 때 "테스트중인 모든 코드가 실행 된 후 확인해야 함"을 수정하는 방법은 무엇입니까?