leetcode(3)——414. 第三大的数(C++中的 set,::作用符号,迭代器),628 三个数的最大乘积(sort函数的用法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode(3)——414. 第三大的数(C++中的 set,::作用符号,迭代器),628 三个数的最大乘积(sort函数的用法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 414
- 程序
- 疑惑
- set
- ::在c++中什么意思
- 一、作用域符號:
- 二、全局作用域符號:
- 三、作用域分解運算符:
- C++ 迭代器
- 628
- 程序
- 疑惑
- sort函數
前言
大佬的程序,邊刷邊總結邊學語言。
題目414
題目628
414
程序
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();} };set.insert 插入數據
set.size set中元素的個數
set.begin 第一個元素
set.rbegin 最后一個元素
疑惑
set
C++中的set,采用的是一種非常高效的平衡檢索二叉樹:紅黑樹,也稱為RB樹(Red-Black Tree)。
::在c++中什么意思
百科大佬傳送門
一、作用域符號:
1、A::member就表示類A中的成員member。
2、B::member就表示類B中的成員member。
二、全局作用域符號:
全局作用域符號:當全局變量在局部函數中與其中某個變量重名,那么就可以用::來區分,例如:
三、作用域分解運算符:
比如聲明了一個類A,類A里聲明了一個成員函數voidf(),但沒有在類的聲明里給出f的定義,那么在類外定義f時,就要寫成voidA::f(),表示這個f()函數是類A的成員函數。例如:
C++ 迭代器
vector::iterator iter;這條語句定義了一個名為iter的變量,它的數據類型是由vector定義的iterator類型。
set<int> iset(10,1);for (set<int>::iterator iter = iset.begin(); iter != iset.end(); ++iter){cout<< *iter ; //使用 * 訪問迭代器所指向的元素}628
程序
思路:可能組成最大乘積的三個數有兩種可能。可能一:最大的三個正數的乘積;可能二:最大的正數與最小的兩個負數的乘積。因此遍歷數組,找出這5個數,比較可能的兩個結果,較大的那個就是我們要返回的。
class Solution{ public:int maximumProduct(vector<int>& nums){int n = nums.size();sort(nums.begin(), nums.end());int res1 = nums[n - 1] * nums[n - 2] * nums[n - 3];int res2 = nums[0] * nums[1] * nums[n - 1];return max(res1, res2);} }疑惑
sort函數
sort函數的參數是地址
總結
以上是生活随笔為你收集整理的leetcode(3)——414. 第三大的数(C++中的 set,::作用符号,迭代器),628 三个数的最大乘积(sort函数的用法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode(2)495——提莫攻击
- 下一篇: 机器人运动规划调研(pending)