반응형
leetcode.com/problems/3sum-closest/
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
diff = float('inf')
n = len(nums)
nums.sort()
for i in range(n-2) :
l, r = i+1, n-1
while l < r :
curr = nums[i] + nums[l] + nums[r]
if curr < target :
l += 1
else :
r -= 1
if abs(target-curr) < abs(diff) :
diff = target-curr
if diff == 0 :
break
return target-diff
정리 :
처음 문제를 접했을때 브루트 포스로 푸는 방법 밖에 생각이 나지 않았음.
브루트 포스로 풀면 시간복잡도가 n의 세제곱이 되는데 정렬을 함으로써 시간복잡도를 쉽게 줄일수 있었음.
Array 관련 문제를 풀경우는 sort를 항상 염두해둘 것.
반응형
'0 > leetcode' 카테고리의 다른 글
207. Course Schedule (0) | 2020.09.08 |
---|---|
41. First Missing Positive (0) | 2020.09.08 |
988. Smallest String Starting From Leaf (0) | 2020.09.08 |
835. Image Overlap (0) | 2020.09.07 |
1305. All elements in two binary search trees (0) | 2020.09.06 |