【发布时间】:2018-02-21 08:00:10
【问题描述】:
我有一个问题,我需要找到数组中两个不同元素之间的最大距离。
例如:给定一个数组 4,6,2,2,6,6,4 ,该方法应返回 5 作为最大距离。
我可以使用两个 for 循环来解决问题,但这不是优化的解决方案。我正在尝试通过在单个 for 循环中进行优化。
这是我目前的解决方案:
int [] A = {4,6,2,2,6,6,4};
int N = A.length;
int result = 0;
for (int i = 0; i < N; i++){
for (int j = i; j < N; j++) {
if(A[i] != A[j]){
result = Math.max(result, j - i);
}
}
}
// tried below code but it is not efficient
// for (int i = 0; i < N; i++){
//
// if(A[N-1] != A[i]){
// result = Math.max(result, N-1-i);
// }
// }
System.out.println(result);
如何在时间复杂度方面做得更好?
【问题讨论】:
-
怎么样有2个数组,原始数组A和反向数组R,对于A中的每个元素,获取A和R中的indexOf(element)。
标签: java arrays algorithm integer