Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-04-11 19:05:47
402. 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
作者: SecondRun (雨夜琴聲)   2024-04-11 19:08:00
大師
作者: wu10200512 (廷廷)   2024-04-11 19:35:00
單調棧 我今天才在看 還沒寫

Links booklink

Contact Us: admin [ a t ] ucptt.com