输出单向链表中倒数第k个结点

实现代码:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextInt()) {
            int n = scanner.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = scanner.nextInt();
            }
            int k = scanner.nextInt();

            // 构建链表
            ListNode head = new ListNode(arr[0]);
            ListNode current = head;
            for (int i = 1; i < n; i++) {
                current.next = new ListNode(arr[i]);
                current = current.next;
            }

            // 寻找倒数第k个节点
            ListNode result = findKthFromEnd(head, k);
            System.out.println(result.val);
        }

        scanner.close();
    }

    public static ListNode findKthFromEnd(ListNode head, int k) {
        ListNode fast = head;
        ListNode slow = head;

        // 快指针先走k步
        for (int i = 0; i < k; i++) {
            fast = fast.next;
        }

        // 快慢指针一起走,直到快指针到达末尾
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }

        return slow;
    }
}

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) {
        val = x;
        next = null;
    }
}
相关推荐
xcl09258 小时前
商超智能运营实战:数据驱动提升门店效率与体验指南
java·mfc·宠物
Flynt10 小时前
OpenJDK禁AI代码半年了,现在执行得怎么样?答案是:全靠自觉
java·开源·ai编程
古法安卓15 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding17 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng18 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛19 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko19 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
用户3126874877201 天前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang1 天前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing1 天前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员