public int thirdLargest(int[] arr){
int f_l = arr[0];
int s_l = arr[0];
int t_l = arr[0];
for(int i=1;i<arr.length;i++)
{
if (f_l < arr[i]){
t_l = s_l;
s_l = f_l;
f_l = arr[i];
}
else if (s_l < arr[i]){
t_l = s_l;
s_l = arr[i];
}
else if (t_l < arr[i]){
t_l = arr[i];
}
}
return t_l;
}
我的代码没有通过一些案例,有什么建议吗?
parameter {24,27,30,31,34,37,40,42}' , passes
parameter {2,-1,-2,-3,-4,-5}' , fails
最佳答案
这仅仅是因为您将所有值初始化为 arr[0]
。如果所有元素都小于 arr[0]
,此代码将不会更新值,即使第二大元素不是 arr[0]
.而是使用 Integer.MIN_VALUE
初始化第三个/第二个/最大值的变量,并从第一个元素(索引 = 0)而不是第二个元素开始搜索。
关于java - 给定一个整数数组,找出数组中第三大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236911/