|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2020-5-8 17:53 编辑
题目描述:
- 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
- 示例 1:
- 输入: [3, 2, 1]
- 输出: 1
- 解释: 第三大的数是 1.
- 示例 2:
- 输入: [1, 2]
- 输出: 2
- 解释: 第三大的数不存在, 所以返回最大的数 2 .
- 示例 3:
- 输入: [2, 2, 3, 1]
- 输出: 1
- 解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
- 存在两个值为2的数,它们都排第二。
- 来源:力扣(LeetCode)
- 链接:https://leetcode-cn.com/problems/third-maximum-number
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
- int thirdMax(vector<int>& nums) {
- int len = nums.size();
- sort(nums.begin(), nums.end(), greater<int>());
- vector<int> temp(len, 0);
- temp[0] =1;
- for(int i = 1; i < len; i++){
- if(nums[i] == nums[i-1]) temp[i] =temp[i-1];
- else{
- temp[i] = temp[i-1] + 1;
- }
- if(temp[i] == 3){
- return nums[i];
- }
- }
- return nums[0];
- }
复制代码 |
|