one line of code at a time

[leetcode] 141. Linked List Cycle 파이썬 코드 본문

leetcode

[leetcode] 141. Linked List Cycle 파이썬 코드

oloc 2024. 9. 25. 05:38

https://leetcode.com/problems/linked-list-cycle/

class Solution(object):
    def hasCycle(self, head):
        if not head:
            return False
        visitSet = set()
        while head.next:
            visitSet.add(head)
            if head.next in visitSet:
                return True
            head = head.next
        return False

 

방문 배열을 만들어서 연결 리스트에서 방문한 노드를 저장한다.

다음 노드가 있을 때까지 반복하는데 그 다음 노드가 방문 배열에 있다면, 사이클이 만들어진다는 의미이므로 True를 반환한다.

그리고 다음 노드로 이동한다.

만약 반복문을 끝까지 돌았는데 True가 리턴되지 않았다면, 사이클이 발견되지 않았다는 뜻이므로 False를 리턴한다.