其他分享
首页 > 其他分享> > LeetCode 0203 Remove Linked List Elements

LeetCode 0203 Remove Linked List Elements

作者:互联网

原题传送门

1. 题目描述

2. Solution 1

1、思路分析
删除,找前驱咯~

2、代码实现

package Q0299.Q0203RemoveLinkedListElements;

import DataStructure.ListNode;

public class Solution {
    /*
       删除,找前驱咯~
      */
    public ListNode removeElements(ListNode head, int val) {
        ListNode pre = null, cur = head;
        while (cur != null) {
            if (cur.val != val) {
                pre = cur;
            } else {
                if (cur == head) head = cur.next;  // 删除头结点
                else pre.next = cur.next;
            }
            cur = cur.next;
        }
        return head;
    }
}

3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)

3. Solution 2

1、思路分析
Solution1的递归实现。

2、代码实现

package Q0299.Q0203RemoveLinkedListElements;

import DataStructure.ListNode;

// Recursive
public class Solution2 {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        if (head.val == val) return removeElements(head.next, val);
        else {
            head.next = removeElements(head.next, val);
            return head;
        }
    }
}

3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(n)

标签:head,Elements,ListNode,cur,val,复杂度,List,Remove,next
来源: https://www.cnblogs.com/junstat/p/16336406.html