알고리즘 | Algorithm
[LeetCode 리트코드] Remove Duplicates from Sorted List IISolution - Python
개발자R
2021. 1. 5. 21:59
반응형
문제
문제는 간단하다. 링크드리스트가 주어지는데, 그 중에서 중복된 값이 있다면 그 노드 자체를 제외하고 리턴한다.
예) Input: head = [1,2,3,3,4,4,5] Output: [1,2,5]
추가사항 :
- The number of nodes in the list is in the range [0, 300]. (노드의 개수는 0개이상, 300개 이하)
- -100 <= Node.val <= 100 (노드의 값은 -100부터 100까지)
- The list is guaranteed to be sorted in ascending order. ( input은 오름차순 정렬되어 있음. output도 정렬해야함.)
나의 솔루션
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
result = ListNode()
resultCurr = result
curr = head
cnt = 0
if curr is None:
return head
while curr.next:
if curr.val != curr.next.val and cnt == 0:
resultCurr.next = ListNode()
resultCurr = resultCurr.next
resultCurr.val = curr.val
elif curr.val == curr.next.val:
cnt += 1
elif curr.val != curr.next.val and cnt != 0:
cnt = 0
curr = curr.next
if cnt == 0:
resultCurr.next = ListNode()
resultCurr = resultCurr.next
resultCurr.val = curr.val
return result.next
결과는..
Runtime: 44 ms, Memory Usage: 14.4 MB
흠....
더 줄일 수 있는 방법을 찾아봐야겠다.
반응형