这个解决方案可以运行,但我不确定是否还可以改进。请问有人有什么想法吗?
class Ideone
{
public static void main(String[] args) {
int arr[] = new int[] {4,1,2,3,4,5,6,5,4,3,4,4,4,4,4,4,4};
System.out.println(maxLengthPalindrome(arr, 0, arr.length-1));
}
public static int maxLengthPalindrome(int[] values, int i, int j) {
if(j<=i)
return j-i+1;
if(values[i]==values[j])
return 2 + maxLengthPalindrome(values, i+1, j-1);
else
return Math.max(maxLengthPalindrome(values, i+1, j), maxLengthPalindrome(values, i, j-1));
}
}
O(N^2)
。当然,你可以使用动态规划、滚动哈希或 A* 的一维版本来优化典型的运行时间。优化的选择基于典型数据。 - Dima Tisnek