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
@paul是對的但爲什麼不使用Arrays.sort(降序)然後提取第三個值? – Arijoon
Arrays.sort將爲O(nlog(n)),或者通過列表3次刪除最大值(對於第x個最大值將爲O(3n)或O(xn)) – Arijoon
@Arijoon太昂貴:成本'O(n日誌n)'時間而不是'O(n)' – Dici