Advertisement
1988coder

414. Third Maximum Number

Jan 6th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.71 KB | None | 0 0
  1.  
  2. // LeetCode URL: https://leetcode.com/problems/third-maximum-number/
  3. import java.util.TreeSet;
  4.  
  5. /**
  6.  * Using 3 variables.
  7.  *
  8.  * Time Complexity: O(N)
  9.  *
  10.  * Space Complexity: O(1)
  11.  */
  12. class Solution1 {
  13.     public int thirdMax(int[] nums) throws IllegalArgumentException {
  14.         if (nums == null || nums.length == 0) {
  15.             throw new IllegalArgumentException("Invalid or Empty input nums array");
  16.         }
  17.         if (nums.length == 1) {
  18.             return nums[0];
  19.         }
  20.  
  21.         long max1 = Long.MIN_VALUE;
  22.         long max2 = Long.MIN_VALUE;
  23.         long max3 = Long.MIN_VALUE;
  24.  
  25.         for (int num : nums) {
  26.             if (num == max1 || num == max2 || num == max3) {
  27.                 continue;
  28.             }
  29.             if (num > max1) {
  30.                 max3 = max2;
  31.                 max2 = max1;
  32.                 max1 = num;
  33.             } else if (num > max2) {
  34.                 max3 = max2;
  35.                 max2 = num;
  36.             } else if (num > max3) {
  37.                 max3 = num;
  38.             }
  39.         }
  40.  
  41.         return (int) (max3 == Long.MIN_VALUE ? max1 : max3);
  42.     }
  43. }
  44.  
  45. /**
  46.  * Using TreeSet
  47.  *
  48.  * Time Complexity: O(N log N)
  49.  *
  50.  * Space Complexity: O(N)
  51.  */
  52. class Solution2 {
  53.     public int thirdMax(int[] nums) throws IllegalArgumentException {
  54.         if (nums == null || nums.length == 0) {
  55.             throw new IllegalArgumentException("Invalid or Empty input nums array");
  56.         }
  57.  
  58.         TreeSet<Integer> set = new TreeSet<>();
  59.         for (int num : nums) {
  60.             set.add(num);
  61.             if (set.size() > 3) {
  62.                 set.pollFirst();
  63.             }
  64.         }
  65.  
  66.         return set.size() == 3 ? set.first() : set.last();
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement