【发布时间】:2022-12-05 16:51:36
【问题描述】:
给定一个整数数组,我需要找到两个零元素之间非零元素的最大数量
例如:int[] arr = {1,2,0,2,3,4,5,0,1,2,3,4,5,6,7,8,8,0,1}
这应该返回 9。但是,这会返回 4:
static int solution(int[] arr){
int count = 0;
int maxCount = 0;
for(int i = 0; i<arr.length-1;i++){
if(arr[i]==0 && i< arr.length-2){
i++;
while(arr[i]!=0){
count++;
i++;
}
maxCount = count;
}
}
return maxCount;
}
【问题讨论】:
-
使用调试器单步执行代码。当你遇到第二个
0时,你会看到你有一个i++“太多了”,导致你不再输入while。因为当索引指向数组中的0时您的while已退出 - 而您的for循环会增加下一次循环迭代的索引。 -
此外,您必须在“for”循环开始时将变量“count”初始化为 0,否则您的代码将继续增加“count”值,它将返回 13 而不是 9