最近在leetcode上做與棧有關的題目, c++的基本操作記不住了, 在這裡記錄一下
棧
棧是先進後出(filo)的資料結構, 以下是棧的基本操作:
#include
stack<
int> s;
s.empty()
;//如果棧為空返回true,否則返回false
s.size()
;//返回棧中元素的個數
s.push(6
);//在棧頂壓入元素, 其值為6
s.pop()
;//彈出棧頂元素並刪除該元素
s.top()
;//返回棧頂元素, 但不刪除
佇列
佇列是先進先出(fifo)的資料結構, 以下是佇列的基本操作:
#include
queue<
int> q;
q.empty()
;//如果隊列為空返回true,否則返回false
q.size()
;//返回佇列中元素的個數
q.push(6
);//在隊尾壓入新元素, 其值為6
q.pop()
;//刪除佇列首元素但不返回其值
q.front()
;//返回隊首元素的值,但不刪除該元素
q.back()
;//返回佇列尾元素的值,但不刪除該元素
與棧和佇列類似的有push, pop操作的還有vector和string
向量
vector可以像陣列一樣的進行訪問, 十分方便, leetcode中與陣列有關的問題都採用vector進行儲存
#include
vector<
int> v,b;
v.empty()
;//如果向量為空返回true,否則返回false
v.size()
;//返回向量中元素的個數
v.push_back(6
);//在v的最後乙個向量後插入乙個元素, 其值為6
v.pop_back()
;//刪除向量v的最後乙個元素
v.front()
;//返回v的第乙個元素
v.back()
;//返回v的最後乙個元素
v.clear()
;//清空v中的元素
v.swap
(b);
//b為向量,將v中的元素和b中的元素整體交換
字串
有些題目解決的原理是用棧對字串進行操作, 這時就可以直接用字串的一些操作來替代棧, 操作與棧類似, 節約時間與空間
string s;
s.size()
; s.
length()
;//返回s的長度
s.push_back()
;//向s末尾增加字元
s.pop_back()
;//刪除s末尾的字元
s.back()
;//返回s末尾的字元
Leetcode領扣做題筆記C 2
1.寶石與石頭 給定字串j代表石頭中寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j和s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出...
《LeetCode筆記4》 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...
leetcode做題筆記 67 二進位制求和
leetcode 67.二進位制求和 給你兩個二進位制字串,返回它們的和 用二進位制表示 輸入為 非空 字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 解題 1兩個字串長度要保持一致,少掉的要用0補全 2字串...