167. Two Sum II - Input Array Is Sorted
또 다른 투포인터 문제. 이건 아예 패스하지 못했다..
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
start = 0
sum = numbers[start]
for end in range(1, len(numbers)):
sum += numbers[end]
print(sum)
if sum > target:
while start != end:
sum -= numbers[start]
start += 1
sum += numbers[start]
if sum == target:
return [start+1,end+1]
elif sum == target:
return [start+1,end+1]
end 포인터를 전진시키면서 sum이 target보다 클때만 start를 땡기는 방식을 생각했었는데, 이렇게 하는게 아닌가보다.
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
start = 0
end = len(numbers) - 1
while start < end:
sum = numbers[start] + numbers[end]
if sum == target:
return [start+1,end+1]
elif sum > target:
end -= 1
else:
start += 1
투포인터 접근 방식이 아예 반대였다. 양 끝쪽에서 sum이 target보다 작으면 start를 올리고, 반대로 크면 end를 내리는 방향으로 로직을 짜는것이었다.