連結串列Linkedlist題目
阿新 • • 發佈:2021-08-01
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個nodeformer, 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