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