原创 LeetCode--946.驗證棧序列(最詳細的解題思路!!!)

給定 pushed 和 popped 兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回 true;否則,返回 false 。 示例 1: 輸入:pushed = [1,2,3,4,5]

原创 Leetcode 341. 扁平化嵌套列表迭代器(最詳細的思路解法!!!)

給定一個嵌套的整型列表。設計一個迭代器,使其能夠遍歷這個整型列表中的所有整數。 列表中的項或者爲一個整數,或者是另一個列表。 示例 1: 輸入: [[1,1],2,[1,1]] 輸出: [1,1,2,1,1] 解釋: 通過重複調用 n

原创 173. 二叉搜索樹迭代器(最詳細的解法!!!)

實現一個二叉搜索樹迭代器。你將使用二叉搜索樹的根節點初始化迭代器。 調用 next() 將返回二叉搜索樹中的下一個最小的數。 示例: BSTIterator iterator = new BSTIterator(root); iter

原创 LeetCode 739. 每日溫度(最詳細的解法!!!)

根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸入是你需要再等待多久溫度纔會升高的天數。如果之後都不會升高,請輸入 0 來代替。 例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72,

原创 C++ STL之 trait destructor

construct()接受一個指針p,和一個初值value,該函數的用途就是將初值設定到指針所指的空間上。c++ 的placement new 運算子就是用來完成這個任務。 destroy()有兩個版本,第一個版本接受一個指針,準備將

原创 LeetCode--使括號有效的最少添加 (最詳細的解法!!!!)

給定一個由 ‘(’ 和 ‘)’ 括號組成的字符串 S,我們需要添加最少的括號( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括號字符串有效。 從形式上講,只有滿足下面幾點之一,括號字符串纔是有效的: 它是一個空字符串,或者 它可

原创 LeetCode -- 二叉樹的後序遍歷(多種解法、代碼思路)

給定一個二叉樹,返回它的 後序 遍歷。 示例: 輸入: [1,null,2,3] 1 2 / 3 輸出: [3,2,1] 進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎? 解題思路:總體思路分爲遞歸和迭代兩種。兩者都是依賴於後序遍

原创 LeetCode--二叉樹的先序遍歷(c++)

給定一個二叉樹,返回它的 前序 遍歷。 示例: 輸入: [1,null,2,3] 1 2 / 3 輸出: [1,2,3] 進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎? 解題思路 1、如果採用遞歸思想的話,只需滿足根、左、右輸出

原创 LeetCode 二叉樹的中序遍歷

給定一個二叉樹,返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 2 / 3 輸出: [1,3,2] 進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎? 解題思路:二叉樹的中序遍歷:左根右。採用遞歸的思路很簡單。直

原创 Leetcode 有效的括號

給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 注意空字符串可被認爲是有效字符串。 示例 1: 輸入

原创 LeetCode最小棧

設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) – 將元素 x 推入棧中。 pop() – 刪除棧頂的元素。 top() – 獲取棧頂元素。 getMin() – 檢索棧中的最小元素

原创 delete 和 delete[]

delete只會調用一次析構函數,而delete[]會調用每一個成員的析構函數。當delete操作符用於數組時,它爲每個數組元素調用析構函數,然後調用operator delete來釋放內存。delete與new配套,delete [

原创 Leetcode:682. 棒球比賽

你現在是棒球比賽記錄員。 給定一個字符串列表,每個字符串可以是以下四種類型之一: 1.整數(一輪的得分):直接表示您在本輪中獲得的積分數。 2. “+”(一輪的得分):表示本輪獲得的得分是前兩輪有效 回合得分的總和。 3. “D”(一

原创 最壞情況爲線性時間的選擇算法

算法select可以確認一個有n>1個不同元素的輸入數組中第i小的元素。(如果n=1,則select只返回它的唯一輸入數值作爲第i小的元素。) 1.將輸入數組的n個元素劃分爲n/5(向下取整)組,每組5個元素,則至多隻有一組由剩下的n

原创 static函數 C++

static修飾的函數叫做靜態函數,靜態函數有兩種,根據其出現的地方來分類: 如果這個靜態函數出現在類裏,那麼它是一個靜態成員函數; 靜態成員函數的作用在於:調用這個函數不會訪問或者修改任何對象(非static)數據成員。 其