输出单向链表中倒数第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;
    }
}
相关推荐
装不满的克莱因瓶42 分钟前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
专注于大数据技术栈1 小时前
java学习--Collection的迭代器
java·python·学习
charliejohn3 小时前
计算机考研 408 数据结构 树形查找 相关概念及计算题例题
数据结构·考研
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
梨落秋霜8 小时前
Python入门篇【文件处理】
android·java·python
Java 码农8 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
哈库纳玛塔塔8 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
S***q3779 小时前
Spring Boot管理用户数据
java·spring boot·后端
天“码”行空10 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
毕设源码-郭学长10 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端