leetcode(리트코드)-18 4Sum(python)
leetcode(리트코드)-18 4Sum(python)
leetcode 18 - 4Sum 문제입니다.
1. 문제
https://leetcode.com/problems/4sum/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
4. 문제 해석
- 3Sum 문제와 비슷하게 리스트에서 4개를뽑아 target을 만들어야합니다.
- 중복을 허용하지 않고, 순서바꾸는 것도 허용하지 않습니다.
5. code
코드설명 필요하시면 말씀해주세요.
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
nums.sort()
size = len(nums)
res = []
for i in range(size-3):
if i==0 or (i>0 and nums[i] !=nums[i-1]):
for j in range(i+1,size-2):
if j == i+1 or (j > i+1 and nums[j] != nums[j-1]) :
lo,hi,ts = j+1,size-1,target-(nums[i] +nums[j])
while lo < hi :
if nums[lo] + nums[hi] == ts :
res.append([nums[i],nums[j],nums[lo],nums[hi]])
while lo <hi and nums[lo] == nums[lo+1] :
lo+=1
while lo < hi and nums[hi] == nums[hi-1] :
hi-=1
lo+=1
hi-=1
elif nums[lo] + nums[hi] < ts :
lo+=1
else:
hi-=1
return res
6. 결과 및 후기, 개선점
필요시 c++로 짜드리겠습니다.
This post is licensed under CC BY 4.0 by the author.