Skip to content

Commit 9b89c56

Browse files
committed
May 6
1 parent 6f15b13 commit 9b89c56

File tree

2 files changed

+61
-2
lines changed

2 files changed

+61
-2
lines changed

2024-05-May-LeetCoding-Challenge/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
| May 3 | [165. Compare Version Numbers](https://leetcode.com/problems/compare-version-numbers/) | Medium | Solved |
99
| May 4 | [881. Boats to Save People](https://leetcode.com/problems/boats-to-save-people/) | Medium | Solved |
1010
| May 5 | [237. Delete Node in a Linked List](https://leetcode.com/problems/delete-node-in-a-linked-list/) | Medium | Solved |
11-
| May 6 | []() | | |
11+
| May 6 | [2487. Remove Nodes From Linked List](https://leetcode.com/problems/remove-nodes-from-linked-list/) | Medium | Unsolved |
1212
| May 7 | []() | | |
1313
| May 8 | []() | | |
1414
| May 9 | []() | | |
@@ -40,5 +40,5 @@
4040
| Level | Problems | Solved | Unsolved |
4141
| --- | --- | --- | --- |
4242
| Easy | 2 | 2 | 0 |
43-
| Medium | 3 | 3 | 0 |
43+
| Medium | 4 | 3 | 1 |
4444
| Hard | 0 | 0 | 0 |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from typing import Optional
2+
3+
4+
# Definition for singly-linked list.
5+
class ListNode:
6+
def __init__(self, val=0, next=None):
7+
self.val = val
8+
self.next = next
9+
10+
11+
class Solution:
12+
def removeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
13+
if head is None or head.next is None:
14+
return head
15+
# reverse linked list
16+
prev, curr = None, head
17+
while curr:
18+
curr.next, prev, curr = prev, curr, curr.next
19+
# filter
20+
dummy = ListNode()
21+
prev, curr = dummy, prev
22+
while curr:
23+
if curr.val >= prev.val:
24+
prev.next = curr
25+
prev = curr
26+
curr = curr.next
27+
prev.next = None
28+
# reverse linked list
29+
prev, curr = None, dummy.next
30+
while curr:
31+
curr.next, prev, curr = prev, curr, curr.next
32+
return prev
33+
34+
35+
def main():
36+
head = ListNode(5)
37+
head.next = ListNode(2)
38+
head.next.next = ListNode(13)
39+
head.next.next.next = ListNode(3)
40+
head.next.next.next.next = ListNode(8)
41+
head = Solution().removeNodes(head)
42+
assert head.val == 13
43+
assert head.next.val == 8
44+
assert head.next.next is None
45+
46+
head = ListNode(1)
47+
head.next = ListNode(1)
48+
head.next.next = ListNode(1)
49+
head.next.next.next = ListNode(1)
50+
head = Solution().removeNodes(head)
51+
assert head.val == 1
52+
assert head.next.val == 1
53+
assert head.next.next.val == 1
54+
assert head.next.next.next.val == 1
55+
assert head.next.next.next.next is None
56+
57+
58+
if __name__ == '__main__':
59+
main()

0 commit comments

Comments
 (0)