在简单问题中使用最小值与数组

时间:2016-12-14 05:09:54

标签: java arrays range max minimum

我学习Java并且作为我工作的一部分要求我能够做一些事情,比如计算数组中的值范围(max - min + 1)。我不允许使用collections.min(array)之类的方法。到目前为止,我的解决方案是这样的:

public static int range(int[] data){
int min = 99999999;
int max = 0; 
int test = 0;
int range = 0;
for (int i = 0; i < data.length; i++){
     test = data[i];

     if (test > max)
         max = test;
     if (test < min) 
         min = test;
}
range = (max - min) + 1;
return range; 

}

虽然它适用于它们但它并不特别优雅。最小值为9999999有效但如果我使用大于此值的数字时遇到问题,则无法正常工作。

我觉得应该有一个更好的解决方案,但我没有找到一种方法来找到最小值而不将我的int min设置为非常高的值。否则,数组可能具有非常大的数字,并且最小值永远不会改变,因为数组中的值总是大于它。

1 个答案:

答案 0 :(得分:0)

此方法返回至少一个元素的所有非null数组的范围,否则抛出IllegalArgumentException。这是通过max >= min的完整性检查来完成的,如果truemin的原始初始化值不变,则max仅为for。只有在跳过int循环时才会发生这种情况,这只发生在空数组或空数组中。如果数组包含任何有效的Integer.MAX_VALUE,甚至Integer.MIN_VALUEpublic static int range(int[] list){ int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE; for(int i = 0; list != null && i < list.length; i++){ int current = list[i]; if(current > max){ max = current; } if(current < min){ min = current; } } if(max >= min){ return max-min+1; } else throw IllegalArgumentException("Zero-length and null arrays have an undefined range!"); } ,则此完整性检查会成功。

500:Internal Server Error