剑指Offer 22. 链表中倒数第k个节点

发布时间 2023-08-27 15:57:04作者: 小星code

题目链接: 剑指Offer 22. 链表中倒数第k个节点

题目描述:

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

解法思路:

快慢指针:慢指针不动,快指针先走k步,然后快慢指针一起向后走,当快指针走到末尾时,慢指针所指的就是倒数第k个节点。

代码:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func getKthFromEnd(head *ListNode, k int) *ListNode {
    p := head
    q := head
    for i := 0 ; i < k ; i ++ {
        p = p.Next
    }
    for p!= nil {
        p = p.Next
        q = q.Next
    }
    return q

}