홈>
이 문제 를 해결하려고합니다 :
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
이것은 나의 구현이다 :
public int[] twoSum(int[] numbers, int target) {
Map<Integer, Integer> numbersMap = new HashMap<Integer, Integer>();
int[] requiredNumbers = null;
int index = 0;
for (int number : numbers) {
if (numbersMap.containsKey(target - number)) {
requiredNumbers = new int[2];
requiredNumbers[0] = numbersMap.get(target - number);
requiredNumbers[1] = index;
return requiredNumbers;
} else {
numbersMap.put(number, index);
index++;
}
}
return requiredNumbers;
}
실행 시간을 어떻게 개선 할 수 있습니까?
- 답변 # 1
관련 자료
- Python을 사용한 두 다항식의 합
- python - 내부 조인으로 두 개의 데이터 프레임 조인
- java - 반복되지 않는 숫자 찾기
- macos - 두 개의 화면으로 작업
- css - HTML에 두 개의 머리글이있는 두 개의 테이블 어떻게?
- react native - 하나의 버튼으로 두 가지 이벤트를 수행하는 방법
- excel - "찾기"기능이있는 루프 용
- angular - 두 개의 변수로 ngFor를 사용하는 방법은 무엇입니까?
- sql - 합계로 두 열 피벗
- php - 별표가있는 용어 찾기 *
- html - CSS에서 ID 끝에 홀수/짝수로 div 타겟팅
- python - 하나의 for 루프로 두 개의 목록을 반복하는 방법은 무엇입니까?
- javascript - 동일한 ID를 가진 두 객체를 연결하는 방법
- javascript - 대상 배열에 가장 가까운 숫자 배열을 찾는 방법은 무엇입니까?
- PHP로 대상 XML 어린이
- PHP에서 if 문으로 숫자 정렬
- jquery - AND와 두 기능 결합
- python - 각 이미지에 가장 가까운 두 개 찾기
- python - numpy 배열의 각 두 행의 평균을 찾는 방법
- r - 조건을 사용하여 두 테이블을 조인하는 방법
입력 배열의 크기가큰경우,
알고리즘이 실행됨에 따라 데이터가HashMap
의 용량을 미리 할당하여 속도를 높일 수 있습니다 :HashMap
에 추가됩니다. . 출품작 수가capacity * load_factor
를 초과하는 경우 해시 맵의 용량이 두 배가되고 더 큰 용량을 위해 요소가 리 바인드됩니다. 이 용량 배가 및 리 바인딩에는 시간이 걸립니다. 자주 발생하지는 않지만\ $O (\ log N) \ $번이지만 충분한 용량의 해시 맵으로 시작하여 제거 할 수 있습니다.와이즈 비즈 기본값은 0.75이므로 초기 용량은
load_factor
보다 큽니다. 필요합니다. 와이즈 비즈 이 요구 사항을 충족하는 간단한 표현입니다.numbers.length * 4/3