third maximum number

Third Maximum Number

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.

代码一(8 ms):

public class Solution {
    public int thirdMax(int[] nums) {
        Arrays.sort(nums);

        int t = 0;
        int lc = 0;
        for (int i = nums.length - 1; i >= 0; i--) {
            if (i == nums.length - 1) {
                t = nums[i];
            } else {
                if (t > nums[i]) {
                    t = nums[i];
                    lc += 1;
                }
            }

            if (lc >= 2) {
                break;
            }

        }

        if (lc >= 2) {
            return t;
        }

        return nums[nums.length - 1];
    }
}