알고리즘 | 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

흠....

더 줄일 수 있는 방법을 찾아봐야겠다.

반응형