LeetCode 402 移掉K位數字

2021-08-28 22:35:22 字數 1332 閱讀 3628

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

注意:num 的長度小於 10002 且 ≥ k。

num 不會包含任何前導零。

示例 1 :

輸入: num = 「1432219」, k = 3

輸出: 「1219」

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

示例 2 :

輸入: num = 「10200」, k = 1

輸出: 「200」

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

示例 3 :

輸入: num = 「10」, k = 2

輸出: 「0」

解釋: 從原數字移除所有的數字,剩餘為空就是0。

解題思路:

首先,我們使用類似於貪心的方式,從最高位起,選擇盡可能小的數字,所以,當我們發現前一位大於後一位的時候,我們將其刪掉並且更新k值(因為最後剩下的數字的相對位置一定與現在一樣),當我們按照這樣的方式遍歷之後,如果k值還沒有用完,此時的數字序列是從小到大排列的,所以我們刪掉後面的k位。最後,將首位的0全部刪除,得到結果

**如下:

class

solution

:def

removekdigits

(self, num, k)

:"""

:type num: str

:type k: int

:rtype: str

"""iflen

(num)==0

orlen

(num)

== k:

return

'0'if k ==0:

return num

i=0while i<

len(num)-1

and k>0:

if num[i]

>num[i+1]

: num=num[

:i]+num[i+1:

] k=k-

1if i>0:

i=i-

1else

: i=i+

1if k>0:

num=num[

:len

(num)

-k]while

len(num)

>

1and num[0]

=='0'

: num=num[1:

]return num

leetcode402移掉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 解釋 移...

LeetCode 402 移掉k位數字

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