输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

Python 解答:
1.直觉方法

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

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        count = 0 
        p = head
        while p:
            count += 1
            p = p.next
        num = count - k 
        i = 1
        while i <= num:
            head = head.next
            i += 1
        return head

1.双指针

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

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        count = 0 
        p = head
        while count < k:
            p = p.next
            count += 1
        while p:
            head = head.next
            p = p.next
        return head
最后修改日期: 2021年4月2日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。