解法一:将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
个元素。