P203 移除链表元素


题目

image-20210605002303327

分析

  • 链表常见操作
  • 使用头结点可以容易不少
  • 使用递归比较直观

题解

遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode re = new ListNode(0,head);
ListNode h = re;
while(re.next!=null){
if(re.next.val==val){
re.next = re.next.next;
}else{
re = re.next;
}

}

return h.next;
}
}

image-20210605002845770

时间复杂度 空间复杂度
O(n) O(1)

递归

1
2
3
4
5
6
7
class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head==null)return head;
head.next = removeElements(head.next, val);
return head.val==val?head.next:head;
}
}

image-20210605003027663

时间复杂度 空间复杂度
O(n) O(1)

一点屁话

  • 这种题应该准确而又快速,还应该掌握多种方法
  • 这两天比较轻松奥

← Prev 搭建MC服务器 | P160 相交链表 Next →