algorithm - 给定属性的最大前缀

标签 algorithm sorting

考虑有一个数组a - 我们需要找到a的最大前缀,这样它就可以了。

长度m的数组b被称为好的,如果你能得到一个非递减数组c (c1 ≤ c2 ≤ ⋯ ≤ cm),重复以下操作 m 次(最初,选择 b 的第一个或最后一个元素,将其从 b 中删除,并将其附加到数组末尾c)。

我只能暴力破解,但是有什么有效的算法吗?

最佳答案

证明(或者至少说服自己)一个好的数组不可能有局部最小值。这意味着好的数组必须是单峰的(单峰数组显然是好的)。换句话说,您要查找的前缀由一个非递减的腿组成,后跟一个非递增的腿(当然两者都可以为空)。

这样的前缀可以通过简单的线性扫描找到。

我希望这足以让您开始。

关于algorithm - 给定属性的最大前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62957450/

相关文章:

algorithm - 在包含重复值的已排序和未排序数组中搜索和插入操作的时间复杂度

python - 对元组列表进行排序,元组的第二个元素是列表

javascript - 使用子数组对数组进行展平和排序

java - 按字母顺序对字符串数组中的各个元素进行排序

Java链表集合方法

matlab - 如何在 MATLAB 中针对一列对二维数组进行排序?

c - C : how does this work? 中的合并算法

c# - C# 中的快速子图像比较

Python:确定固定长度列的通用算法

java - 请讨论我的 Java 代码以找到因素(是否正确?)