zoukankan      html  css  js  c++  java
  • 414. 第三大的数

    给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

    示例 1:

    输入: [3, 2, 1]
    
    输出: 1
    
    解释: 第三大的数是 1.
    

    示例 2:

    输入: [1, 2]
    
    输出: 2
    
    解释: 第三大的数不存在, 所以返回最大的数 2 .
    

    示例 3:

    输入: [2, 2, 3, 1]
    
    输出: 1
    
    解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
    存在两个值为2的数,它们都排第二。

    class Solution {
        public int thirdMax(int[] nums) {
            
            Integer max=null,medium=null,min=null,temp=null;
            
            for(int i=0;i<nums.length;++i){
                //如果max没填进去先填max
                if(max==null){
                    max = nums[i];
                } else {
                     if(nums[i]==max) continue;
                    if(nums[i]>max){
                        temp = medium;
                        medium = max;
                        min = temp;
                        max = nums[i];
                        continue;
                    }
                    if(medium==null){
                        medium = nums[i]; continue;
                    }
                    if(nums[i]==medium) continue;
                    if(nums[i]>medium){
                        min = medium;
                        medium=nums[i];continue;
                    }
                    if(min==null){
                        min = nums[i]; continue;
                    }
                    if(nums[i]>=min){
                        min = nums[i];
                    }
                    
                }
            }
            
            return min==null ? max : min;
    
        }
    }
  • 相关阅读:
    java之类的封装
    java飞机大战之子弹的自动生成
    java之线程飞机大战制作
    java线程游戏之背景图片的移动
    mysql的安装以及简单的命令符
    java之控制多幅图片
    java之线程
    JAVA之数组队列
    java之链表
    python之数据库的操作(课前准备)
  • 原文地址:https://www.cnblogs.com/chen-jack/p/9941137.html
Copyright © 2011-2022 走看看