题解 | #删除链表的倒数第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;
}
}
查看18道真题和解析