原题链接在这里:https://leetcode.com/problems/third-maximum-number/#/description
题目:
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.
时间: 2024-10-27 13:15:59