双100%解法剑指 Offer 22. 链表中倒数第k个节点

Posted 来老铁干了这碗代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双100%解法剑指 Offer 22. 链表中倒数第k个节点相关的知识,希望对你有一定的参考价值。

立志用最少的代码做最高效的表达


输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

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


提交截图:
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        if(head == null || k == 0) return null; // 鲁棒性1
        // 准备工作
        ListNode tmp = head;
        int len = 0;
        while(tmp != null) {
            len++;
            tmp = tmp.next;
        }
        if(k > len) return null;        // 鲁棒性2

        int num = 1;
        while(num++ != len-k+1) {
            head = head.next;
        }
        return head;
    }
}

木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之。

以上是关于双100%解法剑指 Offer 22. 链表中倒数第k个节点的主要内容,如果未能解决你的问题,请参考以下文章

双100%解法LeetCode 141 剑指Offer 23链表中环的入口节点

双100%解法LeetCode 141 剑指Offer 23链表中环的入口节点

剑指Offer 22 链表中倒数第k个节点[双指针] HERODING的LeetCode之路

剑指Offer-14.链表中倒数第k个结点(C++/Java)

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

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