我需要找出如何在数组中找到最大值,小于数组的第一个索引。到目前为止,我只发现了如何在我的数组中找到最大值(如下所示),但我需要帮助只返回小于我的方法中数组中第一个数字的最大值。
public static int findMaxOfLessThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber) {
if (endIndex == startIndex) {
return numbers[endIndex];
}
else {
int max = findMaxOfLessThanFirst(numbers, startIndex, endIndex - 1, firstNumber); //Calling method using recursion.
if (max < numbers[endIndex]) {
return numbers[endIndex];
}
else {
return max;
}
}
}
答案 0 :(得分:0)
更改条件:
if (max < numbers[endIndex]) {
要:
if (max < numbers[endIndex] && numbers[endIndex] < firstNumber) {
答案 1 :(得分:0)
似乎像递归方法一样有点过分。
int maxLessThanFirst( int[] arr ) {
int max = Integ3er.MIN_VALUE;
for ( int i=1; i < arr.length; i++ ) {
if ( arr[i] < arr[0] ) {
<Do normal max value check here>
}
}
return max;
}
请注意,在循环之后,如果max = MIN_VALUE,则需要检查是否存在至少一个值&lt; arr [0](例如,如果所有其他值都是MIN_VALUE,则最大值为MIN_VALUE。如果所有其他值都是> = arr [0],则需要抛出异常以显示没有解决方案。
答案 2 :(得分:0)
您需要两个变量,一个用于存储第一个索引,因此可以与之进行比较,另一个用于在循环遍历数组时存储小于第一个索引的任何值。并且您继续将第二个值替换为低于当前值的任何数字。