关于如何在一个无序的数组中找出一个最长的数组:
1,要保证数字的顺序与原来一致,
用一个hashmap来记录其中任意相邻两个数字的差值,key=a[j] - a[i]其中j > i,
value来记录(i , j);然后再对key进行排序,再进行一次遍历就可以求出最长的 等差数列。如下:{5, 4, 3, 4, 7, 8}
-1 =>(0, 1)(1, 2)
1=>(2, 3)(4, 5)
3=>(3, 4)
故易知最长的等差数列为5, 4, 3。
2,另外一种就是不用再乎原来数组的数字的位置,直接找出最长的等差数列,首先对进行排序,然后用动态规划求答,动态规划未学,故此题未完待续。。。