Leetcode每日一題打卡

2021-10-07 15:10:55 字數 602 閱讀 4517

原題

根據棧先進後出和佇列先進先出的不同特點予以以下實現,使用棧s1記錄佇列尾部元素,每次插入操作可以直接壓入棧s1中;在刪除元素時,為了刪除頭部元素,使用棧s2維護頭部元素。當s2不為空時,直接彈出棧頂元素即可。當s2為空時,就將s1中元素一次彈出而後壓入s2中,實現順序的反轉,s2棧頂元素就是佇列的頭部元素。當棧為空時,返回-1。

class

cqueue

void

(int value)

intdeletehead()

}if(s2.

empty()

)return-1

;else}}

;/**

* your cqueue object will be instantiated and called as such:

* cqueue* obj = new cqueue();

* int param_2 = obj->deletehead();

*/

插入和刪除元素的時間複雜度均為o(1),看起來刪除操作的時間複雜度是o(n),但由於每個元素至多被壓入和彈出s2一次,故其時間複雜度為o(1)。空間複雜度為o(n)。

每日一題 LeetCode

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...

LeetCode每日一題(題1028)

最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...

LeetCode每日一題(題139)

題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...