原题链接在这里:https://leetcode.com/problems/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.

题解:

设立三个指针,交替赋值.

Time Complexity: O(n), n = nums.length.

Space: O(1).

AC Java:

 1 public class Solution {
 2     public int thirdMax(int[] nums) {
 3         Integer max1 = null;
 4         Integer max2 = null;
 5         Integer max3 = null;
 6         
 7         for(Integer n : nums){
 8             if(n.equals(max1) || n.equals(max2) || n.equals(max3)){
 9                 continue;
10             }
11             
12             if(max1==null || n>max1){
13                 max3 = max2;
14                 max2 = max1;
15                 max1 = n;
16             }else if(max2==null || n>max2){
17                 max3 = max2;
18                 max2 = n;
19             }else if(max3==null || n>max3){
20                 max3 = n;
21             }
22         }
23         
24         return max3 == null ? max1 : max3;
25     }
26 }

类似Kth Largest Element in an Array.