【数组】414. 第三大的数
题目:

解答:
方法一:
利用set中元素的有序性和唯一性,将元素放入set中,若set的size不小于3输出倒数第三个元素;若set的size小于3,输出最后一个元素。
1 class Solution { 2 public: 3 int thirdMax(vector<int>& nums) 4 { 5 set<int> s(nums.begin(), nums.end()); 6 auto it = s.end(); 7 it--; 8 if(s.size() >= 3){ 9 it--; 10 it--; 11 } 12 return *it; 13 } 14 };
方法二:
用三个变量记录最大的三个数,遍历的同时更新。
1 class Solution { 2 public: 3 int thirdMax(vector<int>& nums) 4 { 5 long big, mid, small; //最大,第二大,第三大 6 big = mid = small = 1l << 63; 7 8 for(int i : nums) 9 { 10 if(i > big) 11 { 12 small = mid; 13 mid = big; 14 big = i; 15 } 16 else if(i > mid && i != big) 17 { 18 small = mid; 19 mid = i; 20 } 21 else if(i > small && i != mid && i != big) 22 { 23 small = i; 24 } 25 } 26 return (small == 1l << 63) ? (int)big : (int)small; 27 } 28 };

浙公网安备 33010602011771号