题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = Integer.parseInt(in.next());
ListNode head = new ListNode(-1);
ListNode tmp = head;
for (int i = 0; i < n; i++) {
ListNode node = new ListNode(in.nextInt());
tmp.next = node;
tmp = tmp.next;
}
int k = Integer.parseInt(in.next());
ListNode result = getKthVal(head.next, k);
if (result != null) {
System.out.println(result.val);
}else{
System.out.println(0);
}
}
}
public static ListNode getKthVal(ListNode head, int k) {
if (head == null) {
return null;
}
ListNode fast = head, slow = head;
for (int i = 0; i < k; i++) {
if (fast == null) {
return fast;
}
fast = fast.next;
}
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
return slow;
}
}
class ListNode {
ListNode next;
int val;
ListNode(int val) {
this.val = val;
next = null;
}
}
查看17道真题和解析