難度:簡單
題目描述
本來這道題不難,但是測試用例好坑,面向測試用例程式設計了好久
解題思路
類似於大根堆的思想,維護乙個長度為3的陣列,陣列裡元素按照從大到小的順序排序。初始是int型最小值,每新增乙個元素,維護陣列裡的元素大小順序。
要注意的細節(巨坑)有:
重複的元素不能計算,如果不足三個值要返回最大值。這裡的三個值不是陣列的長度,是不重複出現的數字,比如111112,就只能算1和2,應該返回2.
還有測試用例
[-2147483648,-2147483648,-2147483648,-2147483648,1,1,1]
[1,2,-2147483648]
解決辦法一是初始值設定成long型的最小值
我是設定乙個標記位和計數字,如果第一次出現最小值,就把標記位置成false,這樣以後再出現最小值就會被忽略掉。
出現乙個滿足條件的數字,就count++,最後判斷count是不是大於3,如果大於3就返回三個數里最小的,如果小於3就返回大的
/*
* 414. 第三大的數
414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...
414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...
414 第三大的數
題目描述 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 注意,要求返回...