leetcode-402-移掉k位数字

在这里插入图片描述
贪心算法javascript

依题意,咱们要删除k位数字使得最后这个数值最小,其实不难发现,1432(去掉1位数字最小是132),1432(去掉2位数字最小是12),1432(去掉3位数字最小是1),那么这里面的规律是什么呢?java

很显然,就是前一个数比后一个数大就会去除掉,所以,能够开始了。git

固然,不能忽略细节web

  • 去除个数和字符串长度相等时,返回的应该是0;
  • 去除以后,最前的0应该去除(如002应处理成2);
  • 还有,最容易忽略(如2000去除1个数以后会变成000),若是不处理,返回的就多是空串;
  • 最后,若是是 1432(去掉3位数字最小是1) ,这个处理成的是12,所以咱们最后返回的应该是区间[0,stack.length-k]的字符串,也就是1。
var removeKdigits = function(num, k) {
    let stack = [];
    if (num.length == k) return "0";
    for (let val of num) {
        while (k && stack.length && stack[stack.length - 1] > val) {
            stack.pop();
            k--;
        }
        stack.push(val);
    }
    let res = stack.join('');
    if (res == 0) return "0";
    while (stack[0] == 0) {
        stack.shift()
    }
    return stack.join('').substring(0, stack.length - k);
};

在这里插入图片描述



感谢观看 期待关注




在这里插入图片描述

知乎:叄贰壹算法

简书:带只拖鞋去流浪svg

关注我,带你一块儿写bugspa

warning :未经受权,不得转载code

有问题的小伙伴请在下方留言,喜欢就点个赞吧xml