yujianwjj
V2EX  ›  LeetCode

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

  •  
  •   yujianwjj · May 30, 2023 · 3501 views
    This topic created in 1097 days ago, the information mentioned may be changed or developed.

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

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

    4 replies    2023-05-31 03:19:15 +08:00
    JasonLaw
        1
    JasonLaw  
       May 30, 2023
    题目链接: https://leetcode.com/problems/remove-k-digits/

    Greedy? 不应该是 Monotonic Stack 吗?

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

    cpstar
        3
    cpstar  
       May 30, 2023
    看视频理解了题目,但是不赞同在数字大小上做文章,相反,直接干枚举。
    我感觉,应该是,在 num ( m 长)中取 m-k 个数字,然后求最小?
    有啥问题?
    kayleh
        4
    kayleh  
       May 31, 2023 via Android
    1. 只能移除数字,数字的原本顺序无法改变,所以 1432219 移除 3 位的有效答案只能是 1219 ,而不是 1123 。所以只能顺序遍历构造答案。
    2. 组成最小数字的数位应该是递增的(单调栈)
    3. 优先从左到右构造数字(尽量让高位的数较小)对答案贡献越大(贪心)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2700 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 12:18 · PVG 20:18 · LAX 05:18 · JFK 08:18
    ♥ Do have faith in what you're doing.