中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

北京微信網(wǎng)站建設(shè)費(fèi)用北京seo優(yōu)化公司

北京微信網(wǎng)站建設(shè)費(fèi)用,北京seo優(yōu)化公司,做網(wǎng)站總費(fèi)用,百度云圖片轉(zhuǎn)wordpress目錄 1.stack 1.1stack的介紹 1.2stack的使用 練習(xí)題: 1.3stack的模擬實(shí)現(xiàn) 2.queue的介紹和使用 2.1queue的介紹 2.2queue的使用 2.3queue的模擬實(shí)現(xiàn) 3.priority_queue的介紹和使用 3.1priority_queue的介紹 3.2priority_queue的使用 歡迎 1.stack 1.1stack…

目錄

1.stack

1.1stack的介紹

?1.2stack的使用

練習(xí)題:

?1.3stack的模擬實(shí)現(xiàn)

2.queue的介紹和使用

2.1queue的介紹

?2.2queue的使用

2.3queue的模擬實(shí)現(xiàn)?

?3.priority_queue的介紹和使用

3.1priority_queue的介紹

?3.2priority_queue的使用


歡迎

1.stack

1.1stack的介紹

cplusplus.com/reference/stack/stack/?kw=stack

?1.2stack的使用

接口說明
stack()構(gòu)造空的棧
empty()檢測stack是否為空
size()返回stack中元素的個(gè)數(shù)
top()返回棧頂元素的引用
push()

將元素val壓入stack中

pop()將stack中尾部的元素彈出

練習(xí)題:

155. 最小棧 - 力扣(LeetCode)

?

class MinStack {
public:MinStack() {}void push(int val) {_st.push(val);if(_minst.empty() || val<=_minst.top())//比較,如果小于當(dāng)前最小值,則插入_minst中_minst.push(val);}void pop() {if(_st.top() == _minst.top())//如果相等,兩個(gè)棧一起刪除該數(shù)據(jù)_minst.pop();_st.pop();}int top() {return _st.top();}int getMin() {return _minst.top();//返回最小棧的棧頂數(shù)據(jù),即最小元素}
private:stack<int> _st;stack<int> _minst;//輔助棧(最小棧):將當(dāng)前val與棧頂數(shù)據(jù)比較,將最小值入棧,即記錄當(dāng)前最小值
};

棧的壓入、彈出序列_牛客題霸_??途W(wǎng)

class Solution {
public:/*** 代碼中的類名、方法名、參數(shù)名已經(jīng)指定,請勿修改,直接返回方法規(guī)定的值即可*** @param pushV int整型vector* @param popV int整型vector* @return bool布爾型*/bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// write code heresize_t pushi = 0, popi = 0;stack<int> st;while (pushi < popV.size()){st.push(pushV[pushi++]);//1.先入棧pushi位置的數(shù)據(jù)while (!st.empty() && popV[popi] == st.top())//棧頂數(shù)據(jù)跟popi位置序列數(shù)據(jù)比較,如果匹配則出棧,popi++//如果不匹配繼續(xù)入棧{popi++;st.pop();}}return st.empty();//如果匹配則棧為空,不匹配棧不為空}
};

150. 逆波蘭表達(dá)式求值 - 力扣(LeetCode)

#include <vector>
#include <stack>
#include <string>class Solution {
public:// 定義函數(shù) evalRPN,接收一個(gè)存儲(chǔ)字符串的向量 tokens 作為參數(shù),返回逆波蘭表達(dá)式的計(jì)算結(jié)果int evalRPN(vector<string>& tokens) {// 創(chuàng)建一個(gè)整數(shù)類型的棧 s,用于存儲(chǔ)操作數(shù)stack<int> s;// 使用范圍 for 循環(huán)遍歷 tokens 向量中的每個(gè)字符串元素,str 是對當(dāng)前元素的引用for(auto& str : tokens) {// 檢查當(dāng)前字符串是否為運(yùn)算符(+、-、*、/)if("+" == str || "-" == str || "*" == str || "/" == str) {// 若為運(yùn)算符,從棧中彈出棧頂元素作為右操作數(shù)int right = s.top();s.pop();// 再次從棧中彈出棧頂元素作為左操作數(shù)int left = s.top();s.pop();// 根據(jù)運(yùn)算符進(jìn)行相應(yīng)的運(yùn)算switch(str[0]) {// 若運(yùn)算符為 +,將左操作數(shù)和右操作數(shù)相加,結(jié)果壓入棧中case '+':s.push(left + right);break;// 若運(yùn)算符為 -,用左操作數(shù)減去右操作數(shù),結(jié)果壓入棧中case '-':s.push(left - right);break;// 若運(yùn)算符為 *,將左操作數(shù)和右操作數(shù)相乘,結(jié)果壓入棧中case '*':s.push(left * right);break;// 若運(yùn)算符為 /,用左操作數(shù)除以右操作數(shù),結(jié)果壓入棧中case '/':s.push(left / right);break;}} else {// 若當(dāng)前字符串不是運(yùn)算符,則將其轉(zhuǎn)換為整數(shù)并壓入棧中s.push(stoi(str));}}// 遍歷結(jié)束后,棧中僅剩下一個(gè)元素,即逆波蘭表達(dá)式的最終計(jì)算結(jié)果,將其返回return s.top();}
};

?1.3stack的模擬實(shí)現(xiàn)

從棧的接口中可以看出,棧實(shí)際是一種特殊的vector,因此使用vector完全可以?模擬實(shí)現(xiàn)stack

#pragma once//stack<int, vector<int>>s1;
//stack<int, list<int>>s1;
#include<vector>
#include<list>namespace pzn
{template<class T, class Container = deque<T>>class stack{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}const T& top(){return _con.back();}size_t size() const{return _con.size();}bool empty() const{return _con.empty();}private:Container _con;};}

2.queue的介紹和使用

2.1queue的介紹

1. 隊(duì)列是一種容器適配器,專門用于在 FIFO 上下文 ( 先進(jìn)先出 ) 中操作,其中從容器一端插入元素,另一端提取元素。
2. 隊(duì)列作為容器適配器實(shí)現(xiàn),容器適配器即將特定容器類封裝作為其底層容器類, queue 提供
一組特定的成員函數(shù)來訪問其元素。元素從隊(duì)尾入隊(duì)列,從隊(duì)頭出隊(duì)列。
3. 底層容器可以是標(biāo)準(zhǔn)容器類模板之一,也可以是其他專門設(shè)計(jì)的容器類。該底層容器應(yīng)至少
支持以下操作 :
empty :檢測隊(duì)列是否為空
size :返回隊(duì)列中有效元素的個(gè)數(shù)
front :返回隊(duì)頭元素的引用
back :返回隊(duì)尾元素的引用
push_back :在隊(duì)列尾部入隊(duì)列
pop_front :在隊(duì)列頭部出隊(duì)列
4. 標(biāo)準(zhǔn)容器類 deque list 滿足了這些要求。默認(rèn)情況下,如果沒有為 queue 實(shí)例化指定容器
類,則使用標(biāo)準(zhǔn)容器 deque
cplusplus.com/reference/queue/queue/

?

?2.2queue的使用

接口說明
queue()構(gòu)造空的隊(duì)列
empty()檢測隊(duì)列
size()返回隊(duì)列自己中有效元素的個(gè)數(shù)
front()返回對頭元素的引用
back()返回隊(duì)尾元素的引用
push()在隊(duì)尾將元素val入隊(duì)列
pop()將隊(duì)頭元素出隊(duì)列

2.3queue的模擬實(shí)現(xiàn)?

因?yàn)?/span> queue 的接口中存在頭刪和尾插,因此使用 vector 來封裝效率太低,故可以借助 list 來模擬實(shí)
現(xiàn) queue ,具體如下:
#pragma once#include<vector>
#include<list>namespace pzn
{template<class T,class Container=deque<T>>class queue{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_front();}const T& front() const{return _con.front();}const T& back(){return _con.back();}size_t size() const{return _con.size();}bool empty() const{return _con.empty();}private:Container _con;};
}

?3.priority_queue的介紹和使用

3.1priority_queue的介紹

cplusplus.com/reference/queue/priority_queue/

1. 優(yōu)先隊(duì)列是一種容器適配器,根據(jù)嚴(yán)格的弱排序標(biāo)準(zhǔn),它的第一個(gè)元素總是它所包含的元素中最大的。(就是堆)
2. 在堆中可以隨時(shí)插入元素,并且只能檢索最大堆元素 ( 優(yōu)先隊(duì)列中位于頂部的元素) 。
3. 優(yōu)先隊(duì)列被實(shí)現(xiàn)為容器適配器,容器適配器即將特定容器類封裝作為其底層容器類, queue提供一組特定的成員函數(shù)來訪問其元素。元素從特定容器的“ 尾部 彈出,其稱為優(yōu)先隊(duì)列的頂部。
4. 底層容器可以是任何標(biāo)準(zhǔn)容器類模板,也可以是其他特定設(shè)計(jì)的容器類。容器應(yīng)該可以通過隨機(jī)訪問迭代器訪問,并支持以下操作:
empty() :檢測容器是否為空
size() :返回容器中有效元素個(gè)數(shù)
front() :返回容器中第一個(gè)元素的引用
push_back() :在容器尾部插入元素
pop_back() :刪除容器尾部元素
5. 標(biāo)準(zhǔn)容器類 vector deque 滿足這些需求。默認(rèn)情況下,如果沒有為特定的 priority_queue
類實(shí)例化指定容器類,則使用 vector
6. 需要支持隨機(jī)訪問迭代器,以便始終在內(nèi)部保持堆結(jié)構(gòu)。容器適配器通過在需要時(shí)自動(dòng)調(diào)用算法函數(shù)make_heap 、 push_heap pop_heap 來自動(dòng)完成此操作。

?3.2priority_queue的使用

優(yōu)先級隊(duì)列默認(rèn)使用 vector 作為其底層存儲(chǔ)數(shù)據(jù)的容器,在 vector 上又使用了堆算法將 vector
元素構(gòu)造成堆的結(jié)構(gòu),因此 priority_queue 就是堆,所有需要用到堆的位置,都可以考慮使用
priority_queue 。注意:默認(rèn)情況下 priority_queue 是大堆 。

?

接口說明
priority_queue()構(gòu)造一個(gè)空的優(yōu)先隊(duì)列
empty()檢測優(yōu)先隊(duì)列是否為空,是返回true,否則返回false
top()返回優(yōu)先級隊(duì)列中最大值,即堆頂元素
push(x)在優(yōu)先級隊(duì)列中插入元素x
pop()刪除優(yōu)先級隊(duì)列中最大(最小)元素,即堆頂元素

?【注意】

1.默認(rèn)情況下,priority_queue是大堆

#include <vector>
#include <queue>
#include <functional> // greater算法的頭文件
void TestPriorityQueue()
{
// 默認(rèn)情況下,創(chuàng)建的是大堆,其底層按照小于號比較
vector<int> v{3,2,7,6,0,4,1,9,8,5};
priority_queue<int> q1;
for (auto& e : v)
q1.push(e);
cout << q1.top() << endl;
// 如果要?jiǎng)?chuàng)建小堆,將第三個(gè)模板參數(shù)換成greater比較方式
priority_queue<int, vector<int>, greater<int>> q2(v.begin(), v.end());
cout << q2.top() << endl;
}

2.如果在priority_queue中放自定義類型的數(shù)據(jù),用戶需要在自定義類型中提供> 或者< 的重

載。
class Date
{
public:
Date(int year = 1900, int month = 1, int day = 1): _year(year)
, _month(month)
, _day(day)
{}
bool operator<(const Date& d)const
{
return (_year < d._year) ||
(_year == d._year && _month < d._month) ||
(_year == d._year && _month == d._month && _day < d._day);
}
bool operator>(const Date& d)const
{
return (_year > d._year) ||
(_year == d._year && _month > d._month) ||
(_year == d._year && _month == d._month && _day > d._day);
}
friend ostream& operator<<(ostream& _cout, const Date& d)
{
_cout << d._year << "-" << d._month << "-" << d._day;
return _cout;
}
private:
int _year;
int _month;
int _day;
};
void TestPriorityQueue()
{
// 大堆,需要用戶在自定義類型中提供<的重載
priority_queue<Date> q1;
q1.push(Date(2018, 10, 29));
q1.push(Date(2018, 10, 28));
q1.push(Date(2018, 10, 30));
cout << q1.top() << endl;
// 如果要?jiǎng)?chuàng)建小堆,需要用戶提供>的重載
priority_queue<Date, vector<Date>, greater<Date>> q2;
q2.push(Date(2018, 10, 29));
q2.push(Date(2018, 10, 28));
q2.push(Date(2018, 10, 30));
cout << q2.top() << endl;
}

練習(xí)題:

215. 數(shù)組中的第K個(gè)最大元素 - 力扣(LeetCode)

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {//將數(shù)組中的元素先放入優(yōu)先級隊(duì)列中priority_queue<int> p(nums.begin(),nums.end());//將優(yōu)先級隊(duì)列中前k-1個(gè)元素刪除掉for(int i=0;i<k-1;++i){p.pop();}return p.top();}
};

?再見

http://m.risenshineclean.com/news/63948.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)有什么方法連接數(shù)據(jù)庫網(wǎng)絡(luò)營銷師證
  • 政府網(wǎng)站建設(shè)新模式網(wǎng)站排名優(yōu)化軟件聯(lián)系方式
  • 開鎖都在什么網(wǎng)站做最有效的推廣學(xué)校的方式
  • 諸城做網(wǎng)站找個(gè)人種子搜索神器 bt 下載
  • 網(wǎng)站建設(shè) 價(jià)格新聞軟文自助發(fā)布平臺(tái)
  • 大連app制作seo外包優(yōu)化網(wǎng)站
  • jsp做網(wǎng)站能實(shí)現(xiàn)什么功能百度網(wǎng)盤搜索引擎
  • .網(wǎng)站開發(fā)工具dw搜索引擎付費(fèi)推廣
  • .net 創(chuàng)建網(wǎng)站項(xiàng)目網(wǎng)絡(luò)營銷的主要特點(diǎn)有哪些
  • 關(guān)于網(wǎng)站建設(shè)相關(guān)文章武漢 網(wǎng)絡(luò) 推廣
  • 南京網(wǎng)站流量優(yōu)化輕松seo優(yōu)化排名 快排
  • 建設(shè)公司網(wǎng)站要注意哪些杭州網(wǎng)站排名提升
  • 化妝品網(wǎng)站建設(shè)項(xiàng)目計(jì)劃書今日新聞?lì)^條
  • wordpress建站速度提升免費(fèi)推廣途徑與原因
  • 深圳網(wǎng)站設(shè)計(jì)價(jià)格表優(yōu)化大師下載舊版本安裝
  • 山東德州如何網(wǎng)站建設(shè)教程qq群排名優(yōu)化
  • 廣州做和改版網(wǎng)站的公司網(wǎng)上賣貨的平臺(tái)有哪些
  • 好用的wordpress代碼編輯器河南seo外包
  • phpcms 做購物網(wǎng)站谷歌seo優(yōu)化公司
  • html京東頁面制作深圳seo優(yōu)化排名優(yōu)化
  • 貴陽 網(wǎng)站建設(shè)推廣百度百科
  • 廊坊哪些公司做網(wǎng)站百度商家版下載
  • 一線城市網(wǎng)站建設(shè)費(fèi)用高長春網(wǎng)站seo公司
  • 怎么快速開發(fā)一個(gè)網(wǎng)站典型的網(wǎng)絡(luò)營銷案例
  • 教做衣服的網(wǎng)站有哪些網(wǎng)頁搜索
  • 越城網(wǎng)站建設(shè)公司陜西網(wǎng)站建設(shè)網(wǎng)絡(luò)公司
  • 煙臺(tái)專業(yè)做網(wǎng)站公司有哪些微博推廣技巧
  • 純文本網(wǎng)站連接北京建站公司
  • 禁用wordpress插件更新網(wǎng)站關(guān)鍵詞優(yōu)化公司
  • 自個(gè)做網(wǎng)站教程濰坊快速網(wǎng)站排名