美文网首页
算法(14)链表中倒数第k个结点

算法(14)链表中倒数第k个结点

作者: 猪_队友 | 来源:发表于2018-11-08 13:52 被阅读5次

    题目描述

    输入一个链表,输出该链表中倒数第k个结点。

    这道题的难度中等 主要检验鲁棒性。

    思路:
    依次存储目前位置 链表的倒数第K个节点。
    需要注意的是越界,空的处理。

     public ListNode FindKthToTail(ListNode head, int k) {
    //判断 是否为空链表
            if (head == null) return head;
    //判断位置是否为0 
            if (k == 0)  return null;
               
     //因为位置是从1开始的 我们的其实位置也从1开始   
            int index = 1;
    //默认返回节点是头节点 
            ListNode checkNode = head;
    //依次走向next节点         
            while (head.next != null) {
    //当index - k >= 0 说明这个是我们目前的倒数第K个节点保存一下 
    //也就是头结点后移一下
                if (index - k >= 0) {
                    checkNode = checkNode.next;
                }
                index++;
                head = head.next;
            }
    //判断是够K位置节点 比节点的数量还多 如果超过范围 那么返回null
            if (index < k) {
                return null;
            }
    
            return checkNode;
        }
    
     public class ListNode {
            int val;
            ListNode next;
    
            ListNode(int x) {
                val = x;
            }
    
    
        }
    

    相关文章

      网友评论

          本文标题:算法(14)链表中倒数第k个结点

          本文链接:https://www.haomeiwen.com/subject/tgcwxqtx.html