V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yujianwjj
V2EX  ?  LeetCode

leetcode 第 402 题,移除 K 位数字 的疑问

  •  
  •   yujianwjj · 338 天前 · 967 次点击
    这是一个创建于 338 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    这道题目的解法是 每次删除一个字符,使剩下的字符最小。然后执行 k 次。

    这道题目为什么贪心算法是最优解?怎么证明。

    4 条回复  ?  2023-05-31 03:19:15 +08:00
    JasonLaw
        1
    JasonLaw  
       338 天前
    题目链接: https://leetcode.com/problems/remove-k-digits/

    Greedy? 不应该是 Monotonic Stack 吗?

    你应该把你的 solution 发出来,这样子才能有正确性的证明,建议你 append 一下。
    JasonLaw
        2
    JasonLaw  
       338 天前
    NeetCode 的讲解。

    cpstar
        3
    cpstar  
       338 天前
    看视频理解了题目,但是不赞同在数字大小上做文章,相反,直接干枚举。
    我感觉,应该是,在 num ( m 长)中取 m-k 个数字,然后求最小?
    有啥问题?
    kayleh
        4
    kayleh  
       338 天前 via Android
    1. 只能移除数字,数字的原本顺序无法改变,所以 1432219 移除 3 位的有效答案只能是 1219 ,而不是 1123 。所以只能顺序遍历构造答案。
    2. 组成最小数字的数位应该是递增的(单调栈)
    3. 优先从左到右构造数字(尽量让高位的数较小)对答案贡献越大(贪心)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2149 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:46 · PVG 12:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com