zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    TestNG:org.openqa.selenium.firefox.NotConnectedException: Unable to connect
    Python 程序员经常犯的 10 个错误
    python爬虫框架scrapy实例详解
    使用python进行汉语分词
    Python监控日志程序
    用Python读取excel中的数据
    Python 文件处理
    10 款最好的 Python IDE
    自动化测试代码架构浅谈
    Robotium如何向下拖动屏幕
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7669855.html
Copyright © 2011-2022 走看看