classSolution{public:intthirdMax(vector<int>& nums){int len = nums.size();long max =-2147483649;long secondMax =-2147483649,thirdMax =-2147483649;for(int i =0; i < len;++i){//不能出现重复的数,这行表示有重复的数时,不能参与比较if(max == nums[i]|| secondMax == nums[i]|| thirdMax == nums[i])continue;if(nums[i]> max){
thirdMax = secondMax;
secondMax = max;
max = nums[i];}elseif(nums[i]> secondMax){
thirdMax = secondMax;
secondMax = nums[i];}elseif(nums[i]> thirdMax){
thirdMax = nums[i];}}if(thirdMax ==-2147483649) thirdMax = max;return thirdMax;}};
STL库
classSolution{public:intthirdMax(vector<int>& nums){int len = nums.size();sort(nums.begin(),nums.end());auto it =unique(nums.begin(),nums.end());if(it - nums.begin()>=3)return*(it-3);elsereturn*(it-1);}};
线性枚举:通过线性枚举求第几大值就需要定义相同个变量,但是当找n/2个最大值时,时间复杂度会变为O(n^2),这时候需要别的方法代码块中注释的是很重要的技巧。class Solution {public: int thirdMax(vector<int>& nums) { int len = nums.size(); long max = -2147483649; long secondMax = -2147483649.