Zero to Hero
article thumbnail
Published 2021. 5. 3. 10:19
141. Linked List Cycle Algorithm
 

Linked List Cycle - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

1. Object id값과 집합을 이용한 풀이

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        id_set = set()
        cur = head
        while cur:
            if id(cur) not in id_set:
                id_set.add(id(cur))
            else:
                return True
            cur = cur.next
        return False

객체 id값은 고유하기 때문에 집합에 넣고 이미 현재 객체 id값이 집합에 있다면 사이클이 있음으로 판단한다.

 

2. Floyd의 순환 알고리즘

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        slow = fast = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast:
                return True
        return False

시간 복잡도나 공간 복잡도가 별 차이 나진 않지만 이렇게도 풀 순 있다.

'Algorithm' 카테고리의 다른 글

234. Palindrome Linked List  (0) 2021.05.04
226. Invert Binary Tree  (0) 2021.05.03
53. Maximum Subarray  (0) 2021.05.02
101. Symmetric Tree  (0) 2021.05.02
155. Min Stack  (0) 2021.04.30
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!