题解 | #输出单向链表中倒数第k个结点#【手写单链表】
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
思路
- 尾插法建立单链表
- 双指针找倒数第 k 个节点
import java.util.*;
class ListNode {
int val;
ListNode next;
ListNode() {
this(0, null);
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
ListNode dummyHead = new ListNode();
ListNode tail = dummyHead;
int n = in.nextInt();
// 建表
for (int i = 0; i < n; i++) {
tail.next = new ListNode(in.nextInt(), null);
tail = tail.next;
}
tail.next = null;
int k = in.nextInt();
// 双指针
// 1、fast先走k个节点
ListNode fast = dummyHead;
while (k-- > 0 && fast != null) {
fast = fast.next;
}
// 2、二者同时后移
ListNode slow = dummyHead;
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
System.out.println(slow.val);
}
in.close();
}
}
查看10道真题和解析