Skip to content

[thispath98] Week 9 #993

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 9, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions linked-list-cycle/thispath98.py
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 문제는 LinkedList의 특성을 살려서 풀어보시면 공간 복잡도 O(1) 으로 풀이가 가능하실거에요. 꼭 한번 다시 풀어보셨으면 좋겠습니다!

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None

class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
"""
Intuition:
노드마다 고유한 id를 저장하고 중복되는 id가 있다면
True를 반환한다. 그 외에는 False이다.

Time Complexity:
O(N):
각 노드를 한번씩 스캔하므로 O(N)이 소요된다.

Space Complexity:
O(N):
각 노드의 id를 저장하므로 O(N)이 소요된다.
"""
node_ids = []
node = head
answer = False
while node:
node_id = id(node)
if node_id not in node_ids:
node_ids.append(node_id)
else:
answer = True
break
node = node.next

return answer