目录

leetcode-hot-100-19删除链表的第N个节点

【leetcode hot 100 19】删除链表的第N个节点

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