Python Leetcode
19.Remove Nth Node From End of List
删除链表的倒数第N个节点。
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
fast = head
slow = head
for i in range(n):
fast = fast.next
if not fast:
return head.next
while fast.next:
slow = slow.next
fast = fast.next
slow.next = slow.next.next
return head
21.Merge Two Sorted Lists
合并两个有序链表。
递归:
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1:
return l2
if not l2:
return l1
if l1.val < l2.val:
l1.next = self.mergeTwoLists(l1.next, l2)
return l1
else:
l2.next = self.mergeTwoLists(l1, l2.next)
return l2
141.Linked List Cycle
环形链表。
给定一个链表,判断链表中是否有环。
class Solution(object):
def hasCycle(self, head):
"""
:type head: ListNode
:rtype: bool
"""
slow = head
fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
return True
return False
206. Reverse Linked List
反转链表。
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
p = head
ls = []
while p:
ls.insert(0, p.val)
p = p.next
p = head
for i in ls:
p.val = i
p = p.next
return head
876. Middle of the Linked List
链表的中间节点。
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
class Solution(object):
def middleNode(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
slow = head
fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
return slow
234.Palindrome Linked List
回文链表。
判断一个链表是否为回文链表。
class Solution(object):
def isPalindrome(self, head):
"""
:type head: ListNode
:rtype: bool
"""
ls = []
slow = head
fast = head
while fast and fast.next:
ls.insert(0, slow.val)
slow = slow.next
fast = fast.next.next
if fast:
slow = slow.next
for i in ls:
if i != slow.val:
return False
slow = slow.next
return True