167. Two Sum II - Input Array Is Sorted
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
l, r = 0, len(numbers)-1
res = []
while l < r:
if numbers[l]+numbers[r] < target:
l +=1
elif numbers[l]+numbers[r] > target:
r -=1
else: # numbers[l]+numbers[r] == target
res.append(l+1)
res.append(r+1)
break
return res
https://youtu.be/cQ1Oz4ckceM?si=cQZ68c1mfJdS072N
최종 코드
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
l, r = 0, len(numbers) - 1 # 왼쪽 포인터 l은 0, 오른쪽 포인터 r은 배열 마지막 인덱스로 초기화
while l < r: # 두 포인터가 겹치지 않는 동안 반복
curSum = numbers[l] + numbers[r] # 현재 포인터가 가리키는 두 수의 합 계산
if curSum > target: # 합이 타겟보다 크면
r -= 1 # 오른쪽 값을 줄이기 위해 포인터를 왼쪽으로 이동
elif curSum < target: # 합이 타겟보다 작으면
l += 1 # 왼쪽 값을 키우기 위해 포인터를 오른쪽으로 이동
else: # 합이 타겟과 정확히 일치하면
return [l + 1, r + 1] # 문제 조건: 1-based index로 결과 반환
return [] # 문제에서 항상 답이 존재한다고 가정하지만, 안전을 위해 빈 리스트 반환'LeetCode > NeetCode' 카테고리의 다른 글
| Hashmap: 1. Two Sum ★ (1) | 2024.12.01 |
|---|---|
| [Sliding Window Variable Size] 3. Longest Substring Without Repeating Characters (0) | 2024.11.29 |
| [Two Pointers] 125. Valid Palindrome (1) | 2024.11.28 |
| [Two Pointers] 42. Trapping Rain Water ★★★ (0) | 2024.11.28 |
| [Two Pointers] 80. Remove Duplicates from Sorted Array II (0) | 2024.11.25 |