题目:给定一个数组求出数组最长等差数列的长度。
举例:3,8,4,5,6,2
输出:5。
思路:利用区间dp来做,dp[i][diff]的意思是 intAr[0]到intAr[i],等差为diff的等差长度。在求dp长度的时候利用一个ans变量保存最大即可。
dp的求法:
有diff=intAr[i]-intAr[j](j<i)
dp[i][diff]=dp[j][diff]。
细节处理:
我们首先会对数组排序,然后用最大减去最小,来创建我们数组的长度范围,如果最大和最小相等,我们就不需要创建dp数组,直接返回我们整个数组的长度。!!!!!!下面给出代码:
import java.util.Arrays;
/**
* Created by lizhaoz on 2016/4/24.
*/
public class Findlength {
public static int