414 第三大的數

2021-10-07 14:41:41 字數 1325 閱讀 1506

難度:簡單

題目描述

本來這道題不難,但是測試用例好坑,面向測試用例程式設計了好久

解題思路

類似於大根堆的思想,維護乙個長度為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 解釋 注意,要求返回...