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