鉴于这个数组
int [] myArray = {5,-11,2,3,14,5,-14,2};
我必须能够返回 3,因为最长的向下序列是 14,5,-14。
这样做的最快方法是什么?
PS:向下序列是一系列不递增的数字。
最佳答案
只需通过数字列表一次即可。伪代码:
bestIndex = 0
bestLength = 0
curIndex = 0
curLength = 1
for index = 1..length-1
if a[index] is less than or equal to a[index-1]
curLength++
else
//restart at this index since it's a new possible starting point
curLength = 1
curIndex = index
if curLength is better than bestLength
bestIndex = curIndex
bestLength = curLength
next
注意:如果您不关心知道子序列发生的位置,您可以放弃包含 bestIndex 或 curIndex 的任何行,如 Gary 的实现中所见。
关于java - 在 Java 数组中查找最长的向下序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3878105/