Leecode演算法之棧(簡單)

2021-10-05 06:35:04 字數 1267 閱讀 9295

這裡是引用有效括號字串為空 ("")、"(" + a + 「)」 或 a + b,其中 a 和 b 都是有效的括號字串,+ 代表字串的連線。例如,"","()","(())()" 和 「(()(()))」 都是有效的括號字串。

如果有效字串 s 非空,且不存在將其拆分為 s = a+b 的方法,我們稱其為原語(primitive),其中 a 和 b 都是非空有效括號字串。

給出乙個非空有效字串 s,考慮將其進行原語化分解,使得:s = p_1 + p_2 + … + p_k,其中 p_i 是有效括號字串原語。

對 s 進行原語化分解,刪除分解中每個原語字串的最外層括號,返回 s 。

/**

* @param s

* @return

*/var

removeouterparentheses

=function(s

)}elseif(

s[i]

==')')}

}return stack.

join(''

);};

**分析:**棧:先進後出,最後進入的資料在棧頂。關於這道題,可將括號存入陣列中,根據計數來進行去除最外層括號。

var

cqueue

=function()

;//佇列:先進先出

/** * @param value

* @return

*///看他呼叫的方法將他寫在原型中

cqueue.prototype.

=function

(value)

;/**

* @return

*///佇列刪除:因為資料結構是棧,棧是後進先出,所以說想要實現佇列,需要先把棧的順序顛倒,然後再pop

cqueue.prototype.

deletehead

=function()

=this;if

(outstack.length)

else

return outstack.

pop()||

-1;}

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

* var obj = new cqueue()

* var param_2 = obj.deletehead()

*/

簡單的單調棧演算法

目錄應用 單調棧是一種演算法,它可以用一次掃瞄 o n 時間求出序列中每個數向左和向右的第乙個大於它的數,也可以用一次掃瞄 o n 時間求出序列中每個數向左和向右的第乙個小於它的數。以大於為例 用單調棧求左邊第乙個大於的數 有數列 big 對於乙個數 a i 前面的兩個數 a p,a q,quad ...

簡單演算法 39 最小棧

題目 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.push 3 minstack.getmin 返回 3.min...

leecode演算法平方根詳解有注釋,簡單明瞭。

leecode演算法平方根詳解有注釋,簡單明瞭。實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 an highlighted block public cla...