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

2023-05-30 15:57:01 +08:00
 yujianwjj

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

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

1668 次点击
所在节点    LeetCode
4 条回复
JasonLaw
2023-05-30 16:24:14 +08:00
题目链接: https://leetcode.com/problems/remove-k-digits/

Greedy? 不应该是 Monotonic Stack 吗?

你应该把你的 solution 发出来,这样子才能有正确性的证明,建议你 append 一下。
JasonLaw
2023-05-30 16:24:41 +08:00
NeetCode 的讲解。

<amp-youtube data-videoid="cFabMOnJaq0" layout="responsive" width="480" height="270"></amp-youtube>
cpstar
2023-05-30 17:15:43 +08:00
看视频理解了题目,但是不赞同在数字大小上做文章,相反,直接干枚举。
我感觉,应该是,在 num ( m 长)中取 m-k 个数字,然后求最小?
有啥问题?
kayleh
2023-05-31 03:19:15 +08:00
1. 只能移除数字,数字的原本顺序无法改变,所以 1432219 移除 3 位的有效答案只能是 1219 ,而不是 1123 。所以只能顺序遍历构造答案。
2. 组成最小数字的数位应该是递增的(单调栈)
3. 优先从左到右构造数字(尽量让高位的数较小)对答案贡献越大(贪心)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX