給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是1. 排序後返回o(n)。
int thirdmax(vector& nums)
2. 使用set
int thirdmax(vector& nums)
else
}//維護規模為3的set
int thirdmax(vector& nums)
if(hash_set.size()<3)
return *(hash_set.rbegin());
else
return *(hash_set.begin());
}
3. 維護三個數字
int thirdmax(vector& nums) else if (n > second && n < first) else if (n > third && n < second)
}return third == long_min ? first : third;
}
4. 使用指標
int thirdmax(vector& nums)
else if (nums[i] == *max1)
continue;
else if (max2 == nullptr || nums[i]>*max2)
else if (nums[i] == *max2)
continue;
else if (max3 == nullptr || nums[i]>*max3)
max3 = &nums[i];
}if (max3 == nullptr)
return *max1;
return *max3;
}
LeetCode 414 第三大的數
隨機一題 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...
LeetCode 414 第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2示例 3 輸入 2,2,3,1 輸出 1 解釋 注...