题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ public ListNode removeNthFromEnd (ListNode head, int n) { // write code here ListNode tempHead = new ListNode(-1); tempHead.next = head; ListNode tempNode = tempHead; List<ListNode> list = new ArrayList<>(); while (tempNode != null) { list.add(tempNode); tempNode = tempNode.next; } System.out.println("list size"+list.size()); ListNode lastNode = null; ListNode lastLastNode = null; //倒数第几 int num = 0; for(int i = list.size()-1; i>= 1; i--){ num ++; lastLastNode = list.get(i); if(num == n){ break; }else{ lastNode = lastLastNode; } } tempNode = list.get(0); tempHead = tempNode; for(int j = 1; j<list.size() - n; j++){ ListNode node = list.get(j); tempNode.next = node; tempNode = tempNode.next; } tempNode.next = lastNode; return tempHead.next; } }