题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
import java.util.Scanner;
class ListNode {
ListNode next;
int val;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
ListNode head = new ListNode(-1);
ListNode cur = head;
for (int i = 0; i < n; i++) {
ListNode node = new ListNode(in.nextInt());
while (cur.next != null) {
cur = cur.next;
}
cur.next = node;
}
int k = in.nextInt();
findKNodeFromTail(head.next, n, k);
}
}
private static void findKNodeFromTail(ListNode node, int n, int k) {
int left_k = n - k + 1;
int i = 1;
while (node != null) {
if (i == left_k) {
System.out.println(node.val);
}
node = node.next;
i++;
}
}
}
假设一共是是n个节点构成的链表,找倒数第k个节点就是找顺数第n-k+1个节点,输出这个值即可。
需要注意的是,在构造单链表的时候当前节点要向后移动,保证是最后一个节点。
