75 lines
1.7 KiB
Java
75 lines
1.7 KiB
Java
|
//给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
// 示例 1:
|
|||
|
//
|
|||
|
//
|
|||
|
//输入:[3, 2, 1]
|
|||
|
//输出:1
|
|||
|
//解释:第三大的数是 1 。
|
|||
|
//
|
|||
|
// 示例 2:
|
|||
|
//
|
|||
|
//
|
|||
|
//输入:[1, 2]
|
|||
|
//输出:2
|
|||
|
//解释:第三大的数不存在, 所以返回最大的数 2 。
|
|||
|
//
|
|||
|
//
|
|||
|
// 示例 3:
|
|||
|
//
|
|||
|
//
|
|||
|
//输入:[2, 2, 3, 1]
|
|||
|
//输出:1
|
|||
|
//解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
|
|||
|
//此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
// 提示:
|
|||
|
//
|
|||
|
//
|
|||
|
// 1 <= nums.length <= 104
|
|||
|
// -231 <= nums[i] <= 231 - 1
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
// 进阶:你能设计一个时间复杂度 O(n) 的解决方案吗?
|
|||
|
// Related Topics 数组 排序
|
|||
|
// 👍 230 👎 0
|
|||
|
|
|||
|
package leetcode.editor.cn;
|
|||
|
|
|||
|
import java.util.Arrays;
|
|||
|
import java.util.TreeSet;
|
|||
|
|
|||
|
//414:第三大的数
|
|||
|
class ThirdMaximumNumber {
|
|||
|
public static void main(String[] args) {
|
|||
|
//测试代码
|
|||
|
Solution solution = new ThirdMaximumNumber().new Solution();
|
|||
|
}
|
|||
|
|
|||
|
//力扣代码
|
|||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
|||
|
class Solution {
|
|||
|
public int thirdMax(int[] nums) {
|
|||
|
TreeSet<Integer> set = new TreeSet<>();
|
|||
|
for (int i : nums) {
|
|||
|
set.add(i);
|
|||
|
if (set.size() > 3) {
|
|||
|
set.pollFirst();
|
|||
|
}
|
|||
|
}
|
|||
|
if (set.size() < 3) {
|
|||
|
return set.pollLast();
|
|||
|
} else {
|
|||
|
return set.pollFirst();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//leetcode submit region end(Prohibit modification and deletion)
|
|||
|
|
|||
|
}
|