解法一:將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
個元素。