题解 | #输出单向链表中倒数第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 a = in.nextInt();
ListNode head = new ListNode(-1);
ListNode temp = head;
for(int i = 0;i<a;i++){
ListNode node = new ListNode(in.nextInt());
temp.next = node;
temp = temp.next;
}
int k = in.nextInt();
ListNode result = getKthFromEnd(head.next,k);
if(result != null){
System.out.println(result.val);
}else{
System.out.println(0);
}
}
}
//快慢指针
public static ListNode getKthFromEnd(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;
}
}
