输出单向链表中倒数第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;
    }
}
相关推荐
大隐隐于野3 小时前
从零开始理解和编写LLM中的KV缓存
java·缓存·llm
DKunYu4 小时前
1.多线程初阶
java·开发语言
Ace_31750887764 小时前
京东商品详情接口深度解析:从反爬绕过到数据结构化重构
数据结构·python·重构
尤利乌斯.X4 小时前
在Java中调用MATLAB函数的完整流程:从打包-jar-到服务器部署
java·服务器·python·matlab·ci/cd·jar·个人开发
spencer_tseng4 小时前
easy-captcha-1.6.2.jar
java·jar
旭编4 小时前
牛客周赛 Round 117
java·开发语言
旭意4 小时前
数据结构顺序表
数据结构·c++·蓝桥杯
无敌最俊朗@5 小时前
01-总结
java·jvm·数据库
华仔啊5 小时前
MyBatis-Plus 让你开发效率翻倍!新手也能5分钟上手!
java·后端·mybatis
码银5 小时前
【数据结构】单链表核心知识点梳理
数据结构