![]()
1 import java.util.*;
2
3 /*
4 * public class ListNode {
5 * int val;
6 * ListNode next = null;
7 * }
8 */
9 public class Solution {
10 /**
11 * @param head ListNode类
12 * @param n int整型
13 * @return ListNode类
14 */
15 public ListNode removeNthFromEnd (ListNode head, int n) {
16 // 增加头节点
17 ListNode root = new ListNode(-1);
18 root.next = head;
19 // 快指针
20 ListNode fast = root;
21 // 慢指针
22 ListNode slow = root;
23 // 慢指针的前置指针
24 ListNode pre = null;
25 // 寻找快指针的起始位置
26 for(int i = 0; i < n; i ++) {
27 if (fast == null) {
28 // 链表长度小于n
29 return null;
30 }
31 fast = fast.next;
32 }
33 // 快慢指针一起移动
34 while(fast != null) {
35 pre = slow;
36 slow = slow.next;
37 fast = fast.next;
38 }
39 // 删除节点
40 pre.next = slow.next;
41 // 返回结果
42 return root.next;
43 }
44 }