Gyh's Braindump

CN-18. Delete LinkedList Node

tags
LinkedList, Recursion
source
leetcode-cn

Edge Cases

Solution 1 - Single/Two Pointer

class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;

        ListNode p = dummy;
        while (p.next != null) {
            if (p.next.val == val) {
                p.next = p.next.next;
                break;
            }
            p = p.next;
        }

        return dummy.next;
    }
}

Complexity

  • time: O(N)
  • space: O(1)

Solution 2 - Recursion

class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        if (head == null) return null;
        if (head.val == val) return head.next;
        head.next = deleteNode(head.next, val);
        return head;
    }
}

Complexity

  • time: O(N)
  • space: O(N)