Third Maximum Number Leetcode

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.

 

 

这道题的点在于要把三个值设成Integer型而不是int型,这样就可以用null了。用integer注意用equals比较然后每次要检查是不是为null。另外integer.equals(null)是不会报错的,括号里是null没关系,外面不是就好了。
如果用Integer.MIN_VALUE如果真的有min value进来就没办法判断。
public class Solution {
    public int thirdMax(int[] nums) {
        Integer first = null;
        Integer second = null;
        Integer third = null;
        for (int i = 0; i < nums.length; i++) {
            if (first == null || nums[i] > first) {
                third = second;
                second = first;
                first = nums[i];
            } else if ((second == null || nums[i] > second) && nums[i] < first) {
                third = second;
                second = nums[i];
            } else if ((third == null || nums[i] > third) && (second != null && nums[i] < second)) {
                third = nums[i];
            }
        }
        return third == null ? first : third;
    }
}

 

 
posted @ 2017-01-23 04:06  璨璨要好好学习  阅读(102)  评论(0编辑  收藏  举报