Java 代码实现查找链表倒数第 k 个节点
以下是一个示例的 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
原文地址: http://www.cveoy.top/t/topic/pYlB 著作权归作者所有。请勿转载和采集!