LeetCode:第三大的数

题目描述

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数

思路

  • 首先将数组降序排列
  • 数组中可能会出现重复的元素,那么我们用一个标记flag来记录,遍历数组,如果当前元素和下一个元素不相等,那么flag++,当flag==2时,那么数组存在第三大数字,返回下一个元素即可
  • 上面情况如果没有满足,那么说明不存在第三大元素,直接返回nums[0],最大的数即可

代码

class Solution {
    public int thirdMax(int[] nums) {
        for(int bound=0;bound<nums.length;bound++){
            for(int cur=nums.length-1;cur>bound;cur--){
                if(nums[cur]>nums[cur-1]){
                    int temp=nums[cur];
                    nums[cur]=nums[cur-1];
                    nums[cur-1]=temp;
                }
            }
        }
        int flag=0;
        for(int i=0;i<nums.length-1;i++){
            if(nums[i]!=nums[i+1]){
                flag++;
            }
            if(flag==2){
                return nums[i+1];
            }
        }
        return nums[0];       
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43939602/article/details/114212351

相关文章