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

学习目标:

目标:熟练运用Java所学知识


学习内容:

本文内容:使用Java实现:链表中倒数第k个节点


文章目录

  • 学习目标:
  • 学习内容:
  • 题目描述:
  • 解题思路:
  • 实现代码:

题目描述:

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

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

示例:

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

返回链表 4->5.

解题思路:

通过观察倒数与正数的关系不难发现,倒数第k个元素就是正数第链表长度减去k+1个元素,所以想要得到这个元素,就可以将链表遍历 长度-k 次即可

实现代码:

 public static ListNode getKthFromEnd(ListNode head, int k) {
        ListNode cur=head;
        int count=0;//用于保存链表长度
        //通过循环得到链表长度
        while(cur!=null){
            cur=cur.next;//更新当前结点
            count++;
        }
        cur=head;//更新当前结点至头结点
        for(int i=0;i<count-k;i++){
            cur=cur.next;
        }
        return cur;//返回当前结点既倒数第k个节点
    }

你可能感兴趣的:(LeetCode力扣,链表,java,leetcode,数据结构)