日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode练习——栈(1)

發(fā)布時(shí)間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode练习——栈(1) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題號20:Invalid?Parentheses

Given a string containing just the characters?'(',?')',?'{',?'}',?'['?and?']', determine if the input string is valid.

An input string is valid if:

  • Open brackets must be closed by the same type of brackets.
  • Open brackets must be closed in the correct order.
  • Note that an empty string is?also considered valid.

    Example 1:

    Input: "()" Output: true

    Example 2:

    Input: "(]" Output: false

    算法

  • 初始化棧 S。
  • 一次處理表達(dá)式的每個(gè)括號。
  • 如果遇到開括號,我們只需將其推到棧上即可。這意味著我們將稍后處理它,讓我們簡單地轉(zhuǎn)到前面的?子表達(dá)式
  • 如果我們遇到一個(gè)閉括號,那么我們檢查棧頂?shù)脑亍H绻麠m數(shù)脑厥且粋€(gè)相同類型的左括號,那么我們將它從棧中彈出并繼續(xù)處理。否則,這意味著表達(dá)式無效。
  • 如果到最后我們剩下的棧中仍然有元素,那么這意味著表達(dá)式無效。
  • 復(fù)雜度分析

    • 時(shí)間復(fù)雜度:O(n),因?yàn)槲覀円淮沃槐闅v給定的字符串中的一個(gè)字符并在棧上進(jìn)行?O(1)?的推入和彈出操作。
    • 空間復(fù)雜度:O(n),當(dāng)我們將所有的開括號都推到棧上時(shí)以及在最糟糕的情況下,我們最終要把所有括號推到棧上。例如?((((((((((。
    static const auto _ = []() {ios::sync_with_stdio(false);cin.tie(nullptr);return nullptr; }();class Solution { public:bool isValid(string s) {stack<char> stack;for (int i = 0; i < s.length(); i++){char tmp = s[i];if (tmp == '(' || tmp == '[' || tmp == '{')stack.push(tmp);else{if (stack.empty())return false;char topChar = stack.top();if (topChar == '(' && tmp != ')')return false;if (topChar == '{' && tmp != '}')return false;if (topChar == '[' && tmp != ']')return false;stack.pop();}}return stack.empty();} };

    ?

    總結(jié)

    以上是生活随笔為你收集整理的leetcode练习——栈(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。