LeetCode: Third Maximum Number

来源:互联网 发布:cbox网络电视官方 编辑:程序博客网 时间:2024/05/21 21:47

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: 1Explanation: The third maximum is 1.

Example 2:

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

Example 3:

Input: [2, 2, 3, 1]Output: 1Explanation: Note that the third maximum here means the third maximum distinct number.Both numbers with value 2 are both considered as second maximum.

class Solution {public:    int thirdMax(vector<int>& nums) {        if (nums.size() == 1) {            return nums[0];        }        else if (nums.size() == 2) {            if (nums[0] > nums[1]) {                return nums[0];            }            else return nums[1];        }                vector<int> left;        int max1 = -2147483648;        int max2 = -2147483648;        int max3 = -2147483648;        int n = nums.size();        bool appeared = false;                for (int i = 0; i < n; ++i)        {            if (nums[i] == -2147483648)            {                appeared = true;            }            if (nums[i] >= max1)            {                if (nums[i] > max1) {                max3 = max2;                max2 = max1;                max1 = nums[i];                }            }            else if (nums[i] >= max2)            {                if (nums[i] > max2) {                                max3 = max2;                max2 = nums[i];                }            }            else if (nums[i] >= max3)            {                max3 = nums[i];            }        }                if (!appeared)        {            if (max3 == -2147483648) {                return max1;            }            else return max3;        }        else if (max2 > max3) {            return max3;        }        else return max1;    }};


0 0
原创粉丝点击