Lexicographically Smallest¶
Table of Contents¶
- 402. Remove K Digits (Medium)
- 1673. Find the Most Competitive Subsequence (Medium)
- 316. Remove Duplicate Letters (Medium)
- 1081. Smallest Subsequence of Distinct Characters (Medium)
- 321. Create Maximum Number (Hard)
- 2030. Smallest K-Length Subsequence With Occurrences of a Letter (Hard)
402. Remove K Digits¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: string, stack, greedy, monotonic stack
1673. Find the Most Competitive Subsequence¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, stack, greedy, monotonic stack
316. Remove Duplicate Letters¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: string, stack, greedy, monotonic stack
316. Remove Duplicate Letters - Python Solution
# Monotonic Stack
def removeDuplicateLetters(s: str) -> str:
stack = []
seen = set()
last = {c: i for i, c in enumerate(s)}
for i, c in enumerate(s):
if c not in seen:
while stack and c < stack[-1] and i < last[stack[-1]]:
seen.discard(stack.pop())
seen.add(c)
stack.append(c)
return "".join(stack)
s = "cbacdcbc"
print(removeDuplicateLetters(s)) # acdb
1081. Smallest Subsequence of Distinct Characters¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: string, stack, greedy, monotonic stack
321. Create Maximum Number¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, two pointers, stack, greedy, monotonic stack
2030. Smallest K-Length Subsequence With Occurrences of a Letter¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: string, stack, greedy, monotonic stack