leetcode 402 移掉K位數字

2021-09-18 02:43:10 字數 792 閱讀 3492

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。

輸入: num = "1432219", k = 3

輸出: "1219"

解釋: 移除掉三個數字 4, 3, 和 2 形成乙個新的最小的數字 1219。

輸入: num = "10200", k = 1

輸出: "200"

解釋: 移掉首位的 1 剩下的數字為 200. 注意輸出不能有任何前導零。

考慮k = 1的情況,也就是說從num中刪除乙個字元使其最小,那麼我們要做的就是從左向右找到第乙個數比其下個數大即可,對於k = n的情況我們可以做n次上述操作,但明顯會超時。

換個角度來考慮,只要當前數字比前乙個數字小,那麼前乙個數字就有可能被刪除。

維護乙個遞增的棧,遍歷num,如果當前數字比棧頂元素大,就加入棧,若是小那麼就一直出棧,知道棧頂元素小於等於當前數字。

python

class solution:

def removekdigits(self, num: str, k: int) -> str:

if len(num) == k:return '0'

s, j = , 0

for i in num:

while s and i < s[-1] and j < k:

s.pop()

j += 1

return str(int(''.join(s)[:len(num)-k]))

leetcode402移掉K位數

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 num 的長度小於 10002 且 k。num 不會包含任何前導零。示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。思路...

LeetCode 402 移掉K位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 num 的長度小於 10002 且 k。num 不會包含任何前導零。示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例...

LeetCode 402 移掉K位數字

題目鏈結 題目描述 給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 示例 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。輸入 num 10200 k 1 輸出 200 解釋 移...