题解 | #输出单向链表中倒数第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个节点,输出这个值即可。
需要注意的是,在构造单链表的时候当前节点要向后移动,保证是最后一个节点。