首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“擦除尽可能少的数字以保持递增顺序”的算法

“擦除尽可能少的数字以保持递增顺序”的算法
EN

Stack Overflow用户
提问于 2014-08-16 18:44:13
回答 1查看 692关注 0票数 4

我正在阅读“算法简介:创造性的方法”,并在第一章中回答了这个问题:

问题1.3:你有一个数字列表,删除尽可能少的数字,使剩余的数字按递增的顺序排列。

例如,给定数组

代码语言:javascript
运行
复制
9 44 32 12 7 42 34 92

两个可能的选项是9 12 42 9232 42 92,前者删除的数字较少。

我尝试了一种递归算法,但对它的性能不满意,因为它仍然需要测试太多的组合。我发现了一种启发式算法,它可以快速获得好的结果,但我不确定它是否能保证最好的结果。我在网上搜索,但没有找到关于这个问题的任何讨论。我认为应该有一个更好的算法。

我编写了我的两个方法这里,以防您需要检查。

更新:我在问这个问题的解决方案,@josilber和@templatety胡枝子给出了链接和正确的方向。事实证明,这是一个已知问题家族的特例,具有很好的解决方案。这里没有必要写详细的解决方案,维基页面的子序列最长,耐心排序提供了详细的信息。

值得注意的是,虽然答案有一些联系,但这个问题并不是关于询问资源或链接。真正的答案是“这个问题是一些已知问题的变体”的知识。

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-16 19:18:14

作为一种暗示,这相当于找到数组中最长的递增子序列(您知道为什么吗?)因为这是一个具有已知O( known )解的标准算法,您应该能够通过稍微修改LIS来解决这个问题。

希望这能有所帮助!

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25342775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档