我有一个问题: 有什么办法可以找到一个非0的数组的最小值?让我们说我有这个数组:
{0,2,0,0,1}我希望它能找到1.
答案 0 :(得分:1)
在找到最小包括零时,应该只是略有不同。这可以通过将最小值设置为第一个值然后遍历所有其他值来实现,如果数组中的值较低,则替换最小值。
对于您的场景,需要进行的修改只是忽略值为零的修改。这样的事情应该做:
var numbers:Array = [0,2,0,0,1];
var started:Boolean = false;
var minval:Number = 0;
for each (var num:Number in numbers) {
if ((!started) && (num != 0)) {
started = true;
minval = num;
}
if ((started) && (num != 0) && (num < minval)) {
minval = num;
}
}
在您找到第一个非零值之前,第一个if
语句将是唯一执行的语句,此时您将设置started
并将该数字存储为最小值。
从那时起(包括在那次迭代中),你只需检查非零数字,看看它们是否更少,如果存在则存储它们。
最后,started
为false
,在这种情况下,没有非零数字,或started
为true
和minval
将保留最小的数字。