作者:
JIWP (JIWP)
2024-04-11 19:05:47402. Remove K Digits
有一個array nums,裡面的元素都是非負數
現在要移除k個元素
請回傳再移除k個元素後最小的值
思路:
用一個stack儲存元素
當遇到nums[i]比目前stack最後的元素還小的時候
就把stack[len(stack)-1]Pop出來
一直重複這個動作,直到stack最後一個元素比nums[i]還小或是已經POP出k個元素
接著把nums[i] push到stack
就這樣掃過一次nums
接著如果還沒pop出k個元素就從stack的尾端繼續pop出來
記得要把stack前面的0給刪掉
golang code:
func removeKdigits(num string, k int) string {
stack := []byte{}
idx:=0
for idx<len(num){
for len(stack)>0 && num[idx]<stack[len(stack)-1] && k>0{
stack=stack[:len(stack)-1]
k