LeetCode414 第三大第數

2022-07-09 07:54:14 字數 902 閱讀 1175

非商業,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 解釋 注...