我正在开发一个程序,在这个程序中,我需要获取整数数组中满足以下条件的元素的索引:该元素右侧的所有元素都大于从索引0到该位置的所有元素。
例如:
第1种情况:已知输入为{5,-2,3,8,6},那么我需要的索引位置是2(即数组元素值为3的元素),因为索引2之后的所有元素都大于从索引0到索引2的所有元素,即{5,-2,3}。
第2种情况:已知输入为{-5,3,-2,8,6},那么我需要的索引位置是2(即数组元素值为-2的元素),因为索引2之后的所有元素都大于从索引0到索引2的所有元素,即{-5,3,-2}。
下面是我的Java程序:
程序输出为:
例如:
第1种情况:已知输入为{5,-2,3,8,6},那么我需要的索引位置是2(即数组元素值为3的元素),因为索引2之后的所有元素都大于从索引0到索引2的所有元素,即{5,-2,3}。
第2种情况:已知输入为{-5,3,-2,8,6},那么我需要的索引位置是2(即数组元素值为-2的元素),因为索引2之后的所有元素都大于从索引0到索引2的所有元素,即{-5,3,-2}。
下面是我的Java程序:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ArrayProgram {
public static void main(String[] args) {
int[] array1 = { 5, -2, 3, 8, 6 };
int[] array2 = { -5, 3, -2, 8, 6 };
process(array1);
process(array2);
}
private static void process(int[] array) {
List<Integer> list = new ArrayList<Integer>();
int maxIndex = 0;
list.add(array[0]);
System.out.println(Arrays.toString(array));
for (int i = 1; i < array.length; i++) {
if (array[i] <= Collections.max(list)) {
list.add(array[i]);
maxIndex = i;
}
}
System.out.println("index = " + maxIndex + ", element = " + array[maxIndex]);
}
}
程序输出为:
[5, -2, 3, 8, 6]
index = 2, element = 3
[-5, 3, -2, 8, 6]
index = 0, element = -5
它适用于情况1
,但对于情况2
失败了。您能帮我修复这个问题吗?是否有其他更好的解决方法?
array2[0]
中的值为 -5(负数)。在您的第二个示例中,值为 5(正数)。因此,您的程序似乎工作正常(因为索引 1 > 索引 0 的值)。 - Stefan Warminski