Leetcode 414:Third Maximum Number
2017-03-26 10:52
375 查看
c++代码:
class Solution {
public:
int thirdMax(vector<int>& nums) {
set<int> top3;
for (int num : nums) {
top3.insert(num);
if (top3.size() > 3)
top3.erase(top3.begin());
}
return top3.size() == 3 ? *top3.begin() : *top3.rbegin();
}
};
思路:
(1)创建一个容器set,把数字放进去,放进三个数字的时候,set会自动调整,根是第二大的数字,其左子数是第三大的数字,右子数是最大的数字
(2)放进第四个数字的时候,无论这个数字放在何处,其set.begin()一定是这四个数字中第四大的数字,因此删去,这样就形成了新的三个结点的set
(3)后面依次类推,比这三个数小的必然会被删去,能比第三个数大的会把原来的第三个数挤出去,最后剩下三个结点
(4)如果结点只有两个,那么输出最大值,否则输出左子结点。
class Solution {
public:
int thirdMax(vector<int>& nums) {
set<int> top3;
for (int num : nums) {
top3.insert(num);
if (top3.size() > 3)
top3.erase(top3.begin());
}
return top3.size() == 3 ? *top3.begin() : *top3.rbegin();
}
};
思路:
(1)创建一个容器set,把数字放进去,放进三个数字的时候,set会自动调整,根是第二大的数字,其左子数是第三大的数字,右子数是最大的数字
(2)放进第四个数字的时候,无论这个数字放在何处,其set.begin()一定是这四个数字中第四大的数字,因此删去,这样就形成了新的三个结点的set
(3)后面依次类推,比这三个数小的必然会被删去,能比第三个数大的会把原来的第三个数挤出去,最后剩下三个结点
(4)如果结点只有两个,那么输出最大值,否则输出左子结点。
相关文章推荐
- LeetCode---414---ThirdMaximumNumber
- LeetCode 414 Third Maximum Number
- LeetCode 414 --- Third Maximum Number
- Leetcode Third Maximum Number 414
- LeetCode@Array_414_Third_Maximum_Number
- [LeetCode]414 Third Maximum Number
- LeetCode414 Third Maximum Number
- LeetCode 414 Third Maximum Number(set + priority_queue)
- leetcode414~Third Maximum Number
- LeetCode414——Third Maximum Number
- Leetcode-414 Third Maximum Number
- leetcode 414[easy]---Third Maximum Number
- [LeetCode 414] Third Maximum Number
- Leetcode 414 Third Maximum Number
- LeetCode_414 Third Maximum Number(easy)
- leetcode414: Third Maximum Number
- [C语言][LeetCode][414]Third Maximum Number
- 【LeetCode-414】Third Maximum Number(C++)
- Leetcode之Third Maximum Number 问题
- LeetCode刷题(Third Maximum Number )