給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。
示例 1:
輸入: [3, 2, 1]示例 2:輸出: 1
解釋: 第三大的數是 1.
輸入: [1, 2]示例 3:輸出: 2
解釋: 第三大的數不存在, 所以返回最大的數 2 .
輸入: [2, 2, 3, 1]輸出: 1
解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。
class
solution
else
continue;}
else
if(nums[i]
> nums[first]
)else
if(nums[i]
> nums[second]
&& nums[i]
!= nums[first]
)else
if(nums[i]
!= nums[second]
&& nums[i]
!= nums[first]
&&(third ==-1
|| nums[i]
> nums[third]))
third = i;
else
continue;}
if(third !=-1
)return nums[third]
;else
return nums[first];}
};
用set容器
排序並去重然後可以直接得到答案
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 解釋 注意,要求返回...
414 第三大的數
難度 簡單 題目描述 本來這道題不難,但是測試用例好坑,面向測試用例程式設計了好久 解題思路 類似於大根堆的思想,維護乙個長度為3的陣列,陣列裡元素按照從大到小的順序排序。初始是int型最小值,每新增乙個元素,維護陣列裡的元素大小順序。要注意的細節 巨坑 有 重複的元素不能計算,如果不足三個值要返回...