티스토리 뷰
반응형
🚀 #15. 3SUM
🌠 내 풀이 (3 포인터)
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
# 3 포인터??
answer=[]
nums.sort()
for i in range(len(nums) -2):
p1 = 0
p2 = i+1
p3=len(nums)-1
while p1<p2 and p2<p3:
if nums[p1] + nums[p2]+nums[p3] == 0:
if [nums[p1] , nums[p2], nums[p3]] not in answer:
answer.append([nums[p1], nums[p2], nums[p3]])
p1 +=1
p3 -=1
elif nums[p1] + nums[p2]+nums[p3] < 0:
p1 +=1
else:
p3 -=1
return answer
🌠 2포인터 도 가능 제안 풀이 (2 포인터)
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
#we can use a set so that we make sure that no duplicates are added
output = set()
nums.sort()
for i in range(len(nums)):
l, r = i + 1, len(nums) - 1
while l < r:
if nums[i] + nums[l] + nums[r] == 0:
output.add((nums[i], nums[l], nums[r]))
l += 1
r -= 1
elif nums[i] + nums[l] + nums[r] > 0:
r -= 1
else:
l += 1
return output
🌠 과정
3개의 포인터를 이동해 가며 합이 0인 것을 찾는 방식으로
p1, p3 포인터 범위 내부에서 p2를 for문
으로 순회하며 찾아내는 과정이다.
코드레시피
사이트에 따르면 시간 복잡도가 O(n^2)이지만
단순 브루트 포스
를 사용할 경우 3중 for문
을 사용으로 시간 복잡도가 O(n^3) 가 된다.
🌠 손 코딩
반응형
'알고리즘' 카테고리의 다른 글
[LeetCode] 1641. Count Sorted Vowel Strings - 파이썬 (0) | 2022.03.22 |
---|---|
Palindrome 문제 접근 (0) | 2022.03.07 |
Back Tracking에 대해 알아보자 (0) | 2022.03.06 |
최대 부분 합 구하기 - Kadane's_Algorithm (0) | 2022.03.02 |
최소신장트리 알고리즘 (0) | 2022.02.26 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker
- OOP
- 스프링부트
- 디자인패턴
- springboot
- nginx
- 프로그래머스
- 알고리즘
- java
- Solid
- 자바
- 그래프
- spring-cloud
- CS
- Matlab
- 백준
- security
- 수학
- 매트랩
- 면접
- Spring
- JPA
- interview
- 릿코드
- 스프링
- ajax
- C언어
- kakao
- 자격증
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함