Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/04/11 19:05), 編輯推噓2(200)
留言2則, 2人參與, 1年前最新討論串110/1548 (看更多)
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-- } stack=append(stack,num[idx]) idx++ } for k>0 && len(stack)>0{ stack=stack[:len(stack)-1] k-- } for len(stack)>1 && stack[0]=='0'{ stack=stack[1:] } if len(stack)==0{ return "0" } return string(stack) } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.122.247 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1712833549.A.727.html

04/11 19:08, 1年前 , 1F
大師
04/11 19:08, 1F

04/11 19:35, 1年前 , 2F
單調棧 我今天才在看 還沒寫
04/11 19:35, 2F
文章代碼(AID): #1c5yGDSd (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1c5yGDSd (Marginalman)