题解 | #输出单向链表中倒数第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(); } }