学习目标:
力扣414. 第三大的数
学习内容:
示例 1:
输入: [3, 2, 1]
输出: 1
解释: 第三大的数是 1.
示例 2:
输入: [1, 2]
输出: 2
解释: 第三大的数不存在, 所以返回最大的数 2 .
示例 3:
输入: [2, 2, 3, 1]
输出: 1
解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/third-maximum-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
学习时间:
2020年10月22日
学习产出:
/*
*利用TreeSet集合没有重复元素及可以排序的特点,将数组添加进set集合
*每当set集合内的元素多于3个,则将最小的那个移除
*如果集合中最后元素少于3个,则返回集合中最后的数(即最大的数)
*反之返回集合中第一个数(即三个中最小的数)
*/
public int thirdMax(int[] nums) {
int a;
TreeSet<Integer> set = new TreeSet<>();
for(int n : nums) {
set.add(n);
if(set.size()>3) {
set.remove(set.first());
}
}
if(set.size()<3)
{
a=(int) set.last();
}else {
a=(int) set.first();
}
return a;
}
/*
*精简后的代码
*/
TreeSet<Integer> set = new TreeSet<>();
for (int e : nums) {
set.add(e);
if(set.size()>3) {
set.remove(set.first());
}
}
return set.size()<3?set.last():set.first();
}