携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
一 描述
414. 第三大的数 - 力扣(LeetCode) (leetcode-cn.com)
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
示例 1:
输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
示例 2:
输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:
输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
提示:
- 1 <= nums.length <= 10^4
- -2^31 <= nums[i] <= 2^31 - 1
二 分析
- 利用Arrays类的sort方法进行升序排列
- 寻找第三大数 利用count进行计数 运用if语句进行判断当前值与下一值相等 相等不进行count++ 每遍历一个数字 count+1 当且仅当count==3时 停止for循环
- 对count值进行复查 如果count!=3 则将third==nums[nums.length-1]
三 答案
class Solution {
public int thirdMax(int[] nums) {
//进行排序
Arrays.sort(nums);
//寻找第三大数
int count=0;
int third=0;
for(int i=nums.length-1;i>=0;i--){
if(i==0){
count++;
if(count==3){
third=nums[i];
break;
}
}else{
if(nums[i]==nums[i-1]){
}else{
count++;
if(count==3){
third=nums[i];
break;
}
}
}
}
if(count!=3){
third=nums[nums.length-1];
}
return third;
}
}
四 总结
此题简单就简单在只取第三大,如果取第N大的数组,我的方法不适用。
参考
414. 第三大的数 三种方法- 简单模拟 - STL - set - 第三大的数 - 力扣(LeetCode)
【宫水三叶】一题双解 :「排序」&「遍历」 - 第三大的数 - 力扣(LeetCode)
[Python/Java/JavaScript] 最小/最大堆 第K大/小的数 - 第三大的数 - 力扣(LeetCode)