Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
30 lines (29 loc) · 1.21 KB

File metadata and controls

30 lines (29 loc) · 1.21 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package ch18;
public class P73_2 {
public int[] twoSum(int[] numbers, int target) {
// 배열 순회
for (int i = 0; i < numbers.length; i++) {
// 왼쪽 포인터는 가장 좌측 지정
int left = i + 1;
// 오른쪽 포인터는 가장 우측 지정
int right = numbers.length - 1;
// 타깃에서 현재 값을 뺀, 찾아야 하는 값 지정
int expected = target - numbers[i];
// 이진 검색으로 값 찾기
while (left <= right) {
// 중앙의 위치 계산 개선
int mid = left + (right - left) / 2;
// 만약 중앙값이 찾는 값보다 작으면, 왼쪽 포인터를 중앙으로 이동
if (numbers[mid] < expected)
left = mid + 1;
// 만약 중앙값이 찾는 값보다 크다면, 오른쪽 포인터를 중앙으로 이동
else if (numbers[mid] > expected)
right = mid - 1;
// 정답을 찾은 경우이므로 결과 리턴
else
return new int[]{i + 1, mid + 1};
}
}
return null;
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.