> 文章列表 > LeetCode414_414. 第三大的数

LeetCode414_414. 第三大的数

LeetCode414_414. 第三大的数

LeetCode414_414. 第三大的数

一、描述

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

示例 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

二、题解

方法一:

题意:取出一个数组中第三大的元素,如果不存在第三大的元素,则返回最大的元素
思路:
1、将数组放到map的key中,从而可以取出重复的元素。
2、取出map的key放到一个list中,然后对list进行非递减排序。
3、判断list的大小,小于3则取出来最后一个值,大于等于3则取出来倒数第三个值,将值赋给res。
4、返回res即可。

    //AC Your runtime beats 5.45 % of java submissions.//26 / 26 test cases passed.	Status: Accepted	Runtime: 27 mspublic int thirdMax(int[] nums) {int res = 0;List<Integer> list = new ArrayList<Integer>();Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; i++) {map.put(nums[i], 1);}for (Integer key : map.keySet()) {list.add(key);}Collections.sort(list);System.out.println("list: " + list);res = list.size() < 3 ? list.get(list.size() - 1) : list.get(list.size() - 3);return res;}

LeetCode 367. 有效的完全平方数
LeetCode 371. 两整数之和
LeetCode 383. 赎金信
LeetCode 387. 字符串中的第一个唯一字符
LeetCode 389. 找不同
LeetCode 404. 左叶子之和
LeetCode 412. Fizz Buzz
LeetCode 414. 第三大的数
LeetCode 415. 字符串相加
LeetCode 434. 字符串中的单词数

声明:
        题目版权为原作者所有。文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。

By luoyepiaoxue2014

B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接