难度简单299收藏分享切换为英文接收动态反馈
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
示例 1:
输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。
示例 2:
输入:[1, 2] 输出:2 解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:
输入:[2, 2, 3, 1] 输出:1 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
提示:
class Solution {
public int thirdMax(int[] nums) {
int max=-2147483648,second=-2147483648,third=-2147483648;
int flag=0;
for(int i:nums) {
if(i>max) {
max=i;
}
}
for(int i:nums) {
if(i>=second&&i<max) {
second=i;
}
}
for(int i:nums) {
if(i>=third&&i<second) {
third=i;
flag=1;
}
}
// System.out.println("max:"+max+"second:"+second+"third:"+third);
if(flag==1) {
return third;
}
return max;
}
}
代码来源:LeetCode414. 第三大的数_1号帅比的博客-CSDN博客
1.先给三个变量max、second、thrid设置最小值,这个最小值由“提示”中的第二个条件可知。
2.用for(int num:nums)的方式遍历数组nums[],并将最大的三者用上述变量记录下来。
3.设置一个flag,以此来观察是否有3个或3个以上的数字给予我们判断。若有3个或以上的数,则返回third,若不足3个,则返回最大数max。