https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/
문제 설명:
리스트가 주어졌을때 타겟의 값이 나오도록 두 수를 찾는 문제다
이 때 반환값은 찾은 두 수의 인덱스 번호이다.
투 포인터
- left는 가장 앞에 right는 리스트의 가장 뒤에 배치한다.
- 만약 리스트[left] 리스트[right]의 값이 같으면 인덱스를 반환하고
- 더한 값이 크다면 right의 인덱스 번호를 줄여준다.
- 더한 값이 타겟보다 작으면 left의 인덱스 번호를 큰쪽으로 옮겨준다.
left, right = 0, len(numbers)-1
while not left == right:
if numbers[left] + numbers[right] < target:
left += 1
elif numbers[left] + numbers[right] > target:
right -= 1
else:
return [left+1,right+1]
이진탐색
- 위의 방식과 비슷하나
- mid 값을 둠
for k, v in enumerate(numbers):
left, right = k+1, len(numbers)-1
expected = target-v
print(expected)
while left <= right:
mid = left + (right-left) // 2
if numbers[mid] < expected:
left = mid+1
elif numbers[mid] > expected:
right = mid-1
else:
return k+1, mid+1
'코딩테스트 > LeetCode' 카테고리의 다른 글
[Python][LeetCode] Search in Rotated Sorted Array(회전 정렬된 배열 검색) (0) | 2023.11.01 |
---|---|
[Python][LeetCode] Binary Search(이진탐색) (0) | 2023.11.01 |
[Python][LeetCode] Search a 2D Matrix II(2D 매트릭스 검색) (0) | 2023.11.01 |
[Python][leetCode] List Sort(리스트 정렬) (0) | 2023.10.30 |
[Python][LeetCode] Insertion Sort List(삽입 정렬 리스트) (0) | 2023.10.28 |