可以用priorityqueue
PriorityQueue<Integer> pq = new PriorityQueue<>();
https://leetcode.com/problems/third-maximum-number/discuss/90190/Java-PriorityQueue-O(n)-+-O(1)
1 //mafan Old 2 class Solution { 3 public int thirdMax(int[] nums) { 4 if(nums.length == 1) return nums[0]; 5 List<Integer> list = new ArrayList<Integer>(); 6 for(int i = 0; i < nums.length; i++) { 7 if(!list.contains(nums[i])) { 8 list.add(nums[i]); 9 } 10 } 11 int max = list.get(0); 12 int fmax = 0; 13 for(int j = 0; j < 2 ; j++) { 14 for(int i = 0; i < list.size(); i++) { 15 if(list.get(i) > max) max = list.get(i); 16 } 17 if(j == 0) fmax = max; 18 list.remove((Integer)max); 19 if(list.isEmpty()) return fmax; 20 max = list.get(0); 21 } 22 for(int i = 0; i < list.size(); i++) { 23 if(list.get(i) > max) max = list.get(i); 24 } 25 return max; 26 27 } 28 }