美文网首页
单链表经典例题_倒数第k个结点

单链表经典例题_倒数第k个结点

作者: 掌灬纹 | 来源:发表于2019-04-06 09:50 被阅读0次

遍历一次单链表找到倒数第k个结点

该题源自于CC150一书中,题目经典,方法巧妙,书中描述方法大概思路是快行指针法,两个指针保持距离为k遍历链表,当快指针走到链表尾时, 慢指针自然指向倒数第k个结点。

注意边界与间距的控制
Java代码参考

public class LastOfK {
    /**
     * 找到单链表的倒数第k个结点: 快行指针方法,两个指针保持距离为k遍历链表,
     * 当快指针走到链表尾时, 慢指针自然指向倒数第k个结点,注意边界的控制
     * 
     * @param args
     */

    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        Node head = new Node(0);// 头结点,哑元
        // 单链表的生成
        Node p = head;
        for (int i = 0; i < arr.length; i++) {
            p.next = new Node(arr[i]);
            p = p.next;
        }

        int k = 1;//模拟倒数第k个
        Node ans = lastOfK(head, k);
        if (ans == null)
            System.out.println("null");
        else
            System.out.println(ans.value);

    }

    private static Node lastOfK(Node head, int k) {
        if (k <= 0 || head == null)
            return null;
        Node p1 = head.next;
        Node p2 = head.next;
        int count = 0;
        while (p2 != null && count < k) {// 与p1相差k
            p2 = p2.next;
            count++;
        }

        if (count < k)// 结点数少于k个
            return null;

        while (p2 != null) {
            p1 = p1.next;
            p2 = p2.next;
        }

        return p1;
    }

    private static class Node {
        int value;
        Node next;

        public Node(int value) {
            super();
            this.value = value;
        }

    }

}

相关文章

  • 单链表经典例题_倒数第k个结点

    遍历一次单链表找到倒数第k个结点 该题源自于CC150一书中,题目经典,方法巧妙,书中描述方法大概思路是快行指针法...

  • JZ-014-链表中倒数第 K 个结点

    链表中倒数第 K 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。题目链接: 链表中倒数第 K 个结点...

  • 《剑指offer》(十四)-链表中倒数第K个结点(java)

    链表中倒数第K个结点 考点:链表 题目描述 输入一个链表,输出该链表中倒数第K个结点 代码格式 解题一-直接输出结...

  • 链表中倒数第k个节点

    《剑指offer》面试题22:代码中倒数第k个节点 题目:输入一个单链表,输出该链表中倒数第k个结点。 思路:定义...

  • 剑指offer 链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第 k 个结点。 思路 假如结点数是 n,倒数第 k 个结点也就是正数第 ...

  • 链表Java实现

    获取链表中间结点 获取链表倒数第 k 个节点

  • 链表中倒数第k个结点

    题目来源:牛客网--链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 整体思路...

  • 剑指offer(十四)链表中倒数第k个结点

    [点击进入 牛客网题库:链表中倒数第k个结点] 题目描述输入一个链表,输出该链表中倒数第k个结点。 这个题目就是通...

  • 数据结构-单链表学习目录

    1.单链表的基本操作 2.求单链表的长度 3.判断单链表是否为空 4.查找单链表中倒数第K个结点 5.单链表的反转...

  • 链表

    1判断一个单链表是否有环 2判断一个单链表中环的入口 3在链表的第k个位置插入一个结点 4找到链表中的倒数第k个位...

网友评论

      本文标题:单链表经典例题_倒数第k个结点

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