做題筆記 LeetCode中棧標籤題目的常用操作

2021-10-19 17:34:04 字數 1671 閱讀 6725

最近在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字串...