leetcode 402 移掉k位数字

2020-12-02  本文已影响0人  DFlatMajor

总结:和单调队列一样,遇到一个数满足弹栈,要弹出前面所有满足条件的元素。

class Solution {

public:

    string removeKdigits(string num, int k) {

        //单调递增栈

        vector<char> stk;

        string res;

        for(auto &dig: num){

            while(stk.size() !=0 && k && dig < stk.back()){    //弹栈用while,多弹满足的都弹直到单调增,后面的元素控制前面的元素。

                stk.pop_back();  //如果当前的比前面的小,前面的就不要了

                k--;

            }

            stk.push_back(dig);

        }

        for (; k > 0; --k) {

            stk.pop_back();

        }

        for(auto &dig:stk){

            if(res.size() == 0 && dig == '0'){

                continue;

            }

          res += dig;

        }

        return res == "" ? "0" : res;

    }

};

上一篇 下一篇

猜你喜欢

热点阅读