以下是一个示例的 Java 代码,用于找到链表倒数第 k 个节点对应的数据:

class ListNode {
    int val;
    ListNode next;
    
    ListNode(int val) {
        this.val = val;
    }
}

public class Main {
    public static int findKthFromEnd(ListNode head, int k) {
        if (head == null || k <= 0) {
            return -1; // 表示无效输入
        }
        
        ListNode slow = head;
        ListNode fast = head;
        
        // 将快指针移动到第k个节点处
        for (int i = 0; i < k; i++) {
            if (fast == null) {
                return -1; // 如果链表长度小于k,则返回无效输入
            }
            fast = fast.next;
        }
        
        // 同步移动快慢指针,直到快指针到达链表末尾
        while (fast != null) {
            slow = slow.next;
            fast = fast.next;
        }
        
        // 此时慢指针指向倒数第k个节点
        return slow.val;
    }
    
    public static void main(String[] args) {
        // 创建一个链表: 1 -> 2 -> 3 -> 4 -> 5
        ListNode head = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(3);
        ListNode node4 = new ListNode(4);
        ListNode node5 = new ListNode(5);
        head.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        
        int k = 2;
        int result = findKthFromEnd(head, k);
        System.out.println('倒数第' + k + '个节点的值为: ' + result);
    }
}

输出结果为:

倒数第2个节点的值为: 4
Java 代码实现查找链表倒数第 k 个节点

原文地址: http://www.cveoy.top/t/topic/pYlB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录