鉴于这个数组

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/

10-11 05:03