解法一:将ListNode
放入ArrayList
中,要删除的元素为num = list.size()-n
。如果num = 0
则将头节点删除;否则利用num-1
个元素的next
删除第num
个元素。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
List<ListNode> list = new ArrayList();
ListNode prev = head;
while(prev != null){
list.add(prev);
prev = prev.next;
}
int num = list.size()-n;
if(num==0){
head=head.next;
}
else{
prev = list.get(num-1); // 得到要删除的数的前一个数
prev.next = prev.next.next;
}
return head;
}
}
注意:
- 如果
num = 0
则将头节点删除;否则利用num-1
个元素的next
删除第num
个元素。