题目
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.
题意
第三大数
题解
python代码
class Solution(object):
def thirdMax(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort();
d=1;
for i in range(len(nums)-2, -1, -1):
if nums[i] != nums[i+1]:
d = d + 1
if d == 3:
return nums[i]
return nums[len(nums)-1]
C++代码
class Solution {
public:
int thirdMax(vector<int>& nums) {
sort(nums.begin(), nums.end());
int d=1;
for(int i=nums.size()-2; i>=0; i--)
{
if(nums[i]!=nums[i+1]){
d++;
}
if(d == 3){
return nums[i];
}
}
return nums[nums.size()-1];
}
};