1. 程式人生 > 其它 >連結串列Linkedlist題目

連結串列Linkedlist題目


1. 206. 反轉連結串列
輸入:head = [1,2,3,4,5]
輸出:[5,4,3,2,1]

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
pre = None cur = head while cur: tmp = cur.next cur.next = pre pre
= cur cur = tmp return pre

2. 劍指 Offer 22. 連結串列中倒數第k個節點 ttps://leetcode-cn.com/problems/reverse-linked-list

class Solution(object):
    def getKthFromEnd(self, head, k):
        """
        :type head: ListNode
        :type k: int
        :rtype: ListNode
        """
     #雙指標,faster比slower快k個node
former, latter = head, head for i in range(k): former = former.next while former: former, latter = former.next, latter.next return latter

3. 876. 連結串列的中間結點

class Solution(object):
    def middleNode(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        
"""
     # 雙指標,faster是slower的兩倍
faster = slower = head while faster and faster.next: slower = slower.next faster = faster.next.next return slower
        l1, l2 = head, head
        count = 0
while l1: count += 1 l1 = l1.next # count the length of linkedlist mid = count/2 # get the mid num for i in range(mid): l2 = l2.next return l2