非商業,leetcode鏈結附上:
進入正題。
題目:
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。
示例:
示例 1:
輸入: [3, 2, 1]
輸出: 1
解釋: 第三大的數是 1.
示例 2:
輸入: [1, 2]
輸出: 2
解釋: 第三大的數不存在, 所以返回最大的數 2 .
示例 3:
輸入: [2, 2, 3, 1]
輸出: 1
解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。
**實現:
public int thirdmax(int nums) else if(num < first && num > second) else if(num < second && num > third)}return (int) ((third == long.min_value) ? first : third);
}//時間複雜度o(n),空間複雜度o(1)
分析:
題目中要求演算法的時間複雜度必須是o(n),在某種程度上也限制了題目的解法。
也是因為時間複雜度的要求,因此使用3個臨時變數,在每一次迴圈遍歷時對所有可能的情況都覆蓋到。
針對題目中兩個或多個數相當的情況,在進行判斷的時候自動過濾。
針對返回值的要求,可以充分利用3個變數的初始賦值,即使有其他的返回要求,通過增加判斷條件,也可滿足。
--end
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 解釋 注...