首页 > 其他 > 详细

单链表的倒数第k个结点

时间:2021-02-20 12:07:47      阅读:30      评论:0      收藏:0      [点我收藏+]

单链表的倒数第k个结点

1、题目描述

  • 输入一个链表,输出该链表中倒数第k个节点

  • 从1开始计数,即链表的尾节点是倒数第1个节点

2、解题思路

  • 1、确定链表长度length

  • 2、判断k的有效性,无效返回null

  • 3、遍历单链表,并记录当前结点是倒数第 ? 个结点

    • ?的计算方式为链表长度length - index(index 从 0,1,... length)

    • 如length = 6,index = 0,则当前结点是倒数第 6 个结点

      length = 6,index = 1,则当前结点是倒数第 5 个结点

  • 4、当 ?等于 k 时,输出当前结点

3、代码

public static ListNode getKthFromEnd(ListNode head, int k){
?
    // 链表长度
    int listLength = getLength(head);
    // 判断k的有效性
    if (k <= 0 || k > listLength){
        return null;
    }
    // 遍历单链表
    int index = 0;
    ListNode current = head;
    while (current != null){
        // 倒数索引
        int countDownIndex = listLength - index;
?
        if (countDownIndex == k){
            return current;
        }
?
        current = current.next;
        index ++;
    }
    return null;
}
?
// 求链表长度
public static int getLength(ListNode node){
?
    if (node == null){
        return 0;
    }
?
    int length = 0;
    ListNode temp = node;
    while(temp != null){
        length ++;
        temp = temp.next;
    }
?
    return length;
}

 

 



单链表的倒数第k个结点

原文:https://www.cnblogs.com/LittleSkinny/p/14419537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!