思路:有限变量+遍历
题目要求第三大的数,使用3个指针表示前3大的数a,b,c,使用指针可以避免设置初始值,然后对数组进行遍历,如果:
- if(a == nullptr || *a < num) c=b,b=a,a= &num
- else if(a != nullptr && num < *a && (b == nullptr || *b < num)) c = b, b = &num
- else if(b!=nullptr && num < *b && (c ==nullptr || *c < num)) c = &num
如果c为空,说明第三大数不存在,返回a,否则返回c
class Solution {
public:
int thirdMax(vector& nums) {
int *a=nullptr,*b = nullptr, *c = nullptr;
for(int& n:nums) {
if(a== nullptr || *a < n) {
c = b;
b = a;
a = &n;
}
else if(a !=nullptr && *a > n && (b == nullptr || *b < n)) {
c = b;
b = &n;
}
else if(b!=nullptr && *b > n && (c == nullptr || *c
时间复杂度: O(n)
空间复杂度: O(1)



