LeetCode数组-9(414)-O(n)内找到第三大的数

Posted 菜鸟更要虚心学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode数组-9(414)-O(n)内找到第三大的数相关的知识,希望对你有一定的参考价值。

思路:

  从前向后遍历,用三个变量first second third 保存前三个大的数,初值设为long类型的无穷小(因为开始提交到案遇到负的临界值的情况),如果新来的数大于first则 second first依次后移并且把这歌新值赋值给first

【正确代码】

 1 class Solution {
 2     public int thirdMax(int[] nums) {
 3         long first = nums[0], second = Long.MIN_VALUE, third = Long.MIN_VALUE;
 4         if (nums.length == 1) {
 5             return (int)nums[0];
 6         }
 7         if (nums.length == 2) {
 8             return nums[0] > nums[1] ? (int)nums[0] : (int)nums[1];
 9         }
10         int count = 0;
11         for (int i = 1; i < nums.length; i++) {
12             if (nums[i] > first) {
13                 third = second;
14                 second = first;
15                 first = nums[i];
16             }else if (nums[i] > second && nums[i] < first) {
17                 third = second;
18                 second = nums[i];
19             }else if (nums[i] < second && nums[i] > third) {
20                 third = nums[i];
21             }else {
22                 continue;
23             }
24             count++;
25         }
26         if (count < 2) {
27             return (int)first;
28         }
29         return (int)third;
30     }
31 }

有时间想想用treeset的容器做一下。

以上是关于LeetCode数组-9(414)-O(n)内找到第三大的数的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode练习(python):第414题:第三大的数:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

leetcode414. 第三大的数

LeetCode414. 第三大的数

Leetcode Top-K问题 BFPRT第三大的数(414)

[LeetCode] 448. 找到所有数组中消失的数字(思维)

Leetcode 448.找到所有数组中消失的数字