414. Third Maximum Number

2018/04/09 leetcode 共 798 字,约 3 分钟

Title

the problem link

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.

Solution

维护一个有序堆,3个大小,用set就好了这个不就是有序的嘛!!!

//cpp:
class Solution {
public:
	int thirdMax(vector<int>& nums) {
		set<int,less<int>> s;
		for (int i = 0; i < nums.size(); i++) {
			s.insert(nums[i]);
			if (s.size() > 3) {
				s.erase(s.begin());
			}
		}
		if (s.size() == 3)
			return *s.begin();
		else
			return *s.rbegin();
	}
};

Search

    Table of Contents