题目:
Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).
Example 1:
Input: [3, 2, 1] Output: 1 Explanation: The third maximum is 1.
Example 2:
Input: [1, 2] Output: 2 Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1] Output: 1 Explanation: Note that the third maximum here means the third maximum distinct number. Both numbers with value 2 are both considered as second maximum.
解决方案: Runtime 13ms
public class Solution {
public int thirdMax(int[] nums) {
Integer a[] = new Integer[3];
for(Integer num: nums){
if(num.equals(a[0])||num.equals(a[1])||num.equals(a[2])) continue;
if(a[0]==null||num>a[0]) {a[2]=a[1];a[1]=a[0];a[0]=num;}
else if(a[1]==null||num>a[1]){a[2]=a[1];a[1]=num;}
else if(a[2]==null||num>a[2]){a[2]=num;}
}
return a[2]==null? a[0]:a[2];
}
}参考:
【1】https://leetcode.com/
本文介绍了一种在O(n)时间复杂度内找到数组中第三大数的算法,并提供了具体的Java实现代码。当数组中不包含第三个最大数时,算法将返回最大数。
853

被折叠的 条评论
为什么被折叠?



