输出单向链表中倒数第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;
    }
}
相关推荐
海清河晏1111 小时前
数据结构 | 单循环链表
数据结构·算法·链表
一定要AK5 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao5 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao5 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏4946 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
skywalker_116 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
_日拱一卒7 小时前
LeetCode:除了自身以外数组的乘积
数据结构·算法·leetcode
wuxinyan1237 小时前
Java面试题47:一文深入了解Nginx
java·nginx·面试题
计算机安禾7 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
新知图书7 小时前
搭建Spring Boot开发环境
java·spring boot·后端