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

    题目含义:找出数组中第三大的数字,相同的数字看做是一个。如果不存在第三大的,就返回最大的数字
    方法一:
     1     public int thirdMax(int[] nums) {
     2         Integer max1 = null;
     3         Integer max2 = null;
     4         Integer max3 = null;
     5         for (Integer n:nums)
     6         {
     7             if (n.equals(max1) || n.equals(max2) || n.equals(max3)) continue;
     8             if (max1 == null || n > max1)
     9             {
    10                 max3 = max2;
    11                 max2 = max1;
    12                 max1 = n;
    13             }else if (max2 == null || n > max2)
    14             {
    15                 max3 = max2;  
    16                 max2 = n;
    17             }else if (max3 == null || n > max3)
    18             {
    19                 max3 = n;
    20             }
    21         }
    22         return max3 == null?max1:max3;        
    23     }

    方法二:

     1     public int thirdMax(int[] nums) {
     2         if (nums.length==0)  return 0;
     3         Set<Integer> temp =new TreeSet<Integer>(new Comparator<Integer>() {
     4             @Override
     5             public int compare(Integer o1, Integer o2) {
     6                 return o1.compareTo(o2);
     7             }
     8         });
     9         for (Integer number:nums) temp.add(number);
    10         List<Integer> values =  new ArrayList<>(temp);
    11         return values.size()<3?values.get(values.size()-1):values.get(values.size()-3);
    12     }
  • 相关阅读:
    两个服务器上SQLServer实例之间配置Service Broker示例
    处理数据库镜像问题的一个案例
    oracel修改密码
    Oracle报错
    如何创建ORACLE大文件表空间
    创建、删除表空间
    oracle中新建用户和赋予权限
    非常全的VsCode快捷键
    VS Code常用快捷键
    启动Weblogic问题集锦
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7669855.html
Copyright © 2020-2023  润新知