mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 02:53:31 +08:00
@ -138,7 +138,63 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 添加虚节点方式
|
||||||
|
* 时间复杂度 O(n)
|
||||||
|
* 空间复杂度 O(1)
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ListNode removeElements(ListNode head, int val) {
|
||||||
|
if (head == null) {
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
// 因为删除可能涉及到头节点,所以设置dummy节点,统一操作
|
||||||
|
ListNode dummy = new ListNode(-1, head);
|
||||||
|
ListNode pre = dummy;
|
||||||
|
ListNode cur = head;
|
||||||
|
while (cur != null) {
|
||||||
|
if (cur.val == val) {
|
||||||
|
pre.next = cur.next;
|
||||||
|
} else {
|
||||||
|
pre = cur;
|
||||||
|
}
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
return dummy.next;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 不添加虚拟节点方式
|
||||||
|
* 时间复杂度 O(n)
|
||||||
|
* 空间复杂度 O(1)
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ListNode removeElements(ListNode head, int val) {
|
||||||
|
while (head != null && head.val == val) {
|
||||||
|
head = head.next;
|
||||||
|
}
|
||||||
|
// 已经为null,提前退出
|
||||||
|
if (head == null) {
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
// 已确定当前head.val != val
|
||||||
|
ListNode pre = head;
|
||||||
|
ListNode cur = head.next;
|
||||||
|
while (cur != null) {
|
||||||
|
if (cur.val == val) {
|
||||||
|
pre.next = cur.next;
|
||||||
|
} else {
|
||||||
|
pre = cur;
|
||||||
|
}
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user