思路:
将数组升序排列。
j记录当前找到的是第几大数。
从最后一个元素开始往前处理,一旦j==3,立即返回当前元素,若当前元素与前一个元素不等,则j++。
遍历完毕后,若j还未到达3,则返回最后一个元素,否则返回第一个数。
public class Solution {
public int thirdMax(int[] nums) {
Arrays.sort(nums);
int len = nums.length;
int j = 1, i = len - 1;
for (; i > 0; i--) {
if (j == 3)
return nums[i];
if (nums[i] != nums[i - 1])
j++;
}
if (j < 3)
return nums[len - 1];
else
return nums[0];
}
}
Runtime:6ms
从最后一个元素开始往前处理。