414. 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.

本题注意点是nums数组不是空集,本题考查Integer的特点,值得注意的是其equals的方法:比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true
代码如下:
 1 public class Solution {
 2     public int thirdMax(int[] nums) {
 3         Integer max1 = null;
 4         Integer max2 = null;
 5         Integer max3 = null;
 6         for(Integer n:nums){
 7             if(n.equals(max1)||n.equals(max2)||n.equals(max3)) continue;
 8             if(max1==null||n>max1){
 9                 max3 = max2;
10                 max2 = max1;
11                 max1 = n;
12             }else if(max2==null||n>max2){
13                 max3 = max2;
14                 max2 = n;
15             }else if(max3==null||n>max3){
16                 max3 = n;
17             }
18         }
19         return max3==null?max1:max3;
20     }
21 }

 

posted @ 2017-03-06 13:19  CodesKiller  阅读(144)  评论(0编辑  收藏  举报