這裡是引用有效括號字串為空 ("")、"(" + 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...