Skip to content
Open
Show file tree
Hide file tree
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
17 changes: 17 additions & 0 deletions problem1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# problem 1
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return None
prev = None
while(head):
temp = head.next
head.next = prev
prev = head
head = temp
return prev
20 changes: 20 additions & 0 deletions problem2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# problem 2

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
temp_head = ListNode(-1)
temp_head.next = head
slow_ptr = temp_head
fast_ptr = temp_head
for _ in range(n+1):
fast_ptr = fast_ptr.next
while(fast_ptr):
fast_ptr = fast_ptr.next
slow_ptr = slow_ptr.next
slow_ptr.next = slow_ptr.next.next
return temp_head.next
28 changes: 28 additions & 0 deletions problem3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# problem 3

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None

class Solution:
def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return None
slow = head
fast = head
match_flag = False
while(fast.next and fast.next.next):
fast=fast.next.next
slow=slow.next
if fast == slow:
match_flag = True
break
if not match_flag:
return None
slow = head
while slow!=fast:
slow = slow.next
fast = fast.next
return slow