示例一:
輸入: [1, 2]
輸出: 2
解釋: 第三大的數不存在, 所以返回最大的數 2 .
示例二:
輸入: [2, 2, 3, 1]
輸出: 1
解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。存在兩個值為2的數,它們都排第二。
注意點:最開始定義two和three時,不能寫成 int two = integer.min_value;
因為 integer.min_value 的值為 -2147483648 ,同樣可能是這個陣列中的數。
所以要選擇取值範圍大於 integer 的 long 的最小值。也就是 long two = long.min_value;
思路:用三個變數來存放第一大,第二大,第三大的元素的變數,分別為one, two, three;
遍歷陣列,若該元素比 one 大則將它們三個都往後移動乙個格,並將此時的元素賦值給 one;若比 two 大(比one小)則 two 和 three 往後移動一格;若比three大(比one和two小)則賦值給 three。
最後得到第三大的元素,若沒有則返回第一大的元素。
public
class
lc414
int one = nums[0]
;long two = long.min_value;
long three = long.min_value;
for(
int n : nums)
if(n > one)
else
if(n > two)
else
if(n > three)
}return three == long.min_value ? one :
(int
) three;
// 沒有第三大的元素,就返回最大值
}}
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 解釋 注...