題目:
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o
(n)。
示例 1
:輸入:[3
,2,1
]輸出:
1解釋: 第三大的數是 1.
示例 2
:輸入:[1
,2]輸出:
2解釋: 第三大的數不存在, 所以返回最大的數 2
.示例 3
:輸入:[2
,2,3
,1]輸出:
1解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。
原始碼:
class
solution
if(nums.length ==2)
// max1 為第一大的數字
int max1 = integer.min_value;
// max2 為第二大的數字
int max2 = integer.min_value;
// max3 為第三大的數字
int max3 = integer.min_value;
boolean f =
true
;// count很重要,用來記錄陣列中不重複的數字和重複數字只取乙個的總和是否大於3
int count =0;
for(
int num : nums)
if(num > max1)
else
if(num > max2 && num < max1)
else
if(num > max3 && num < max2)
}// 如果 count 大於或等於 3
// 說明陣列中不重複的數字和重複數字只取乙個的總和大於3
// 則返回第三大的值
// 否則返回第一大的值
// 注意:如果陣列出現重複的數字,第二次遍歷到該數字的時候不會有任何更新操作
// 會接著遍歷下乙個數字
return count >=
3? max3 : max1;
}}
LeetCode 414 第三大的數
隨機一題 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2示例 3 輸入 2,2,3,1 輸出 1 解釋 注...