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.
这道题的test case写的很巧妙
public class Solution { public int thirdMax(int[] nums) { Integer f = null; Integer s = null; Integer result = null; for(int i=0;i<nums.length;i++){ System.out.println(nums[i]); if((f != null && nums[i] ==f) || (s != null && nums[i] ==s) || (result != null && nums[i] ==result)){ continue; } if(f == null || nums[i]>f){ result = s; s = f; f = nums[i]; } else if(s == null || nums[i]>s){ result = s; s = nums[i]; } else if(result == null || nums[i]>result){ result = nums[i]; } } if(nums.length <3 || result == null){ return f; } return result; } }