Title:Third Maximum Number 414
Difficulty:Easy
原题leetcode地址:https://leetcode.com/problems/third-maximum-number/
1. 设置最大值,第二大值,第三大值(有第三大的值,设置flag作为标记),需要注意Integer.MIN_VALUE作为边界值。
时间复杂度:O(n),三次for循环,但都是一层,最长的for循环需要遍历整个数组的长度。
空间复杂度:O(1),没有申请额外。
/**
* 设置最大值,第二大值,第三大值(有第三大值,设置边界值)
* @param nums
* @return
*/
public static int thirdMax(int[] nums) {
int firstMax = Integer.MIN_VALUE;
int secondMax = Integer.MIN_VALUE;
int thirdMax = Integer.MIN_VALUE;
boolean flag = false;
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= firstMax) {
firstMax = nums[i];
}
}
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= secondMax && nums[i] < firstMax) {
secondMax = nums[i];
}
}
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= thirdMax && nums[i] < secondMax) {
thirdMax = nums[i];
flag = true;
}
}
if (flag) {
return thirdMax;
}
else {
return firstMax;
}
}