查找数组中的最大值,但小于数组中的第一个数字

时间:2017-03-30 18:38:57

标签: java arrays recursion

我需要找出如何在数组中找到最大值,小于数组的第一个索引。到目前为止,我只发现了如何在我的数组中找到最大值(如下所示),但我需要帮助只返回小于我的方法中数组中第一个数字的最大值。

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;

    }

}

}

3 个答案:

答案 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)

您需要两个变量,一个用于存储第一个索引,因此可以与之进行比较,另一个用于在循环遍历数组时存储小于第一个索引的任何值。并且您继续将第二个值替换为低于当前值的任何数字。