leetcode 騰訊50題 11 50 括號匹配

2021-09-22 10:11:15 字數 958 閱讀 5394

給定乙個巢狀的括號序列,含有 ( ) [ ] 三種括號,判斷序列是否合法。

樣例「()」 和 「(){}」 是合法的;

「(]」 和 「([)]」 不是合法的。

(棧結構) o(n)o(n)

使用棧資料結構:

遇到左括號,需要壓棧。

遇到右括號,判斷棧頂是否和當前右括號匹配;若不匹配則返回false,否則匹配彈出棧頂。

最後判斷棧是否為空;若為空則合法,否則不合法。

使用棧的特性完美做這道題,技巧在於不匹配的情況,除去不匹配都是匹配的情況,不匹配有兩種情況,匹配錯誤(},,括號沒有匹配完}}}}},當棧無法配對則失效,當最後棧不空也失效

學習stack的基本操縱

c++stack(堆疊)是乙個容器的改編,它實現了乙個先進後出的資料結構(filo)

使用該容器時需要包含#include標頭檔案;

定義stack物件的示例**如下:

stacks1;

stacks2;

stack的基本操作有:

1.入棧:如s.push(x);

2.出棧:如 s.pop().注意:出棧操作只是刪除棧頂的元素,並不返回該元素。

3.訪問棧頂:如s.top();

4.判斷棧空:如s.empty().當棧空時返回true。

5.訪問棧中的元素個數,如s.size();

class solution 

else

if(s[i]

==')'

)}}這種情況,如果不是這種情況

bra.

pop();

}else

if(s[i]

==']'

)else

if(s[i]

=='}')}

return bra.

empty()

;//棧不空則失敗}}

;

騰訊50題第11題

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4class solution def mergetwolists self,l1,l2 if l1 is none return l2 elif ...

leetcode騰訊精選50題(1)

菜鳥第一課 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素...

leetcode 騰訊精選50題 21

given a linked list,rotate the list to the right by k places,where k is non negative.鍊錶的特殊性在於其可以只改變其所指向的位址,而不改變資料存放的真正位址,於是將其收尾閉合後可直接得到乙個閉環的鍊錶,在將其在指定的...