Сложность: medium
Если задана строка num, представляющая неотрицательное целое число num, и целое число k, верните наименьшее возможное целое число после удаления k цифр из num.
Пример:
Input: num = "1432219", k = 3
Output: "1219"
👨💻 Алгоритм:
1⃣Инициализация:
Создайте стек для хранения цифр, которые будут образовывать минимальное число.
2⃣Обработка каждой цифры:
Перебирайте каждую цифру в строке num.
Если текущая цифра меньше верхней цифры в стеке и у вас есть еще возможность удалить цифры (k > 0), удалите верхнюю цифру из стека.
Добавьте текущую цифру в стек.
Удаление оставшихся цифр:
Если после прохождения всей строки k еще больше нуля, удалите оставшиеся цифры из конца стека
3⃣Формирование результата:
Постройте итоговое число из цифр в стеке и удалите ведущие нули.
😎 Решение:
class Solution:
def removeKdigits(self, num: str, k: int) -> str:
stack = []
for digit in num:
while k > 0 and stack and stack[-1] > digit:
stack.pop()
k -= 1
stack.append(digit)
final_stack = stack[:-k] if k else stack
return ''.join(final_stack).lstrip('0') or '0'
Ставь 👍 и забирай 📚 Базу знаний
