underwindfall / Algorithme

练习总结算法的地方
https://qifanyang.com/resume
1 stars 0 forks source link

LCOF18 #358

Closed underwindfall closed 2 years ago

underwindfall commented 2 years ago
 // 哨兵节点
    // time O(n)
    // space O(1)
    public ListNode deleteNode(ListNode head, int val) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode prev = dummy;
        ListNode curr = head;
        ListNode next = curr.next;
        while (curr != null) {
            if (curr.val == val) {
                prev.next = next;
            }

            prev = curr;
            curr = next;
            if (curr != null) {
                next = curr.next;
            }
        }
        return dummy.next;
    }

    // time O(n)
    // soace O(1)
    public ListNode deleteNodeBetter(ListNode head, int val) {
        if (head.val == val)
            return head.next;
        ListNode pre = head, cur = head.next;
        while (cur != null && cur.val != val) {
            pre = cur;
            cur = cur.next;
        }
        if (cur != null)
            pre.next = cur.next;
        return head;
    }