## 题目

Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

Example 1:
Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.
Example 2:
Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.

## 解答

[2,1,-2147483648]，这个在判断第三个时是不更新的，所以额外对其进行计数，用bottom来计数，在最后的判断中就用count+bottom来判断。
AC代码：9ms

class Solution {
public:
int thirdMax(vector<int>& nums) {
#define INT_MIN (-2147483647-1)
int max_3[3];
if(nums.size()==1) return nums[0];
else if(nums.size()==2) return nums[1]>nums[0]?nums[1]:nums[0];
else
{
int first=INT_MIN,second=INT_MIN,third=INT_MIN;
bool flag1=0,flag2=0,flag3=0;//是否顶替掉初值
int count=0;
int bottom=0;

//缺少对三个一样的进行判断
for(int i=0;i<nums.size();i++)
{
if(nums[i]==-2147483648) bottom=1;//有一个不需要更新
if(nums[i]==first||nums[i]==second||nums[i]==third)//如果有相同的数，至少有一个是更新的
continue;
if(nums[i]>first)
{
third=second;
second=first;
first=nums[i];
count++;
}
else if(nums[i]>second)
{
third=second;
second=nums[i];
count++;
}
else if(nums[i]>third)
{
third=nums[i];
count++;
}
}
if(count+bottom>=3)//
return third;//三个都更新了
else
return first;//两个更新，一个更新或者都没更新，没达到要求，返回第一个值

}

}
};

#### LeetCode Third Maximum Number

2016-10-17 19:11:08

#### LeetCode-414. Third Maximum Number

2016-10-31 17:18:13

#### Third Maximum Number

2016-10-30 10:57:43

#### 414. Third Maximum Number (java)

2017-04-03 15:41:14

#### [C语言][LeetCode][414]Third Maximum Number

2016-12-14 13:33:06

#### Leetcode414. Third Maximum Number

2016-10-20 16:30:48

#### Leetcode 414. Third Maximum Number 第三大的数 解题报告

2016-10-20 20:07:57

#### LeetCode - 414. Third Maximum Number-思路详解- C++

2017-01-10 15:44:23

#### [leetcode] 414. Third Maximum Number 解题报告

2016-10-26 23:43:22

#### leetcode解题之414 # Third Maximum Number Java版

2017-03-12 21:09:10

## 不良信息举报

Leetcode-414. Third Maximum Number