【Leetcode每日一題】 綜合練習 - 括號生成(難度??)(76)

1. 題目解析

題目鏈接:22. 括號生成

這個問題的理解其實相當簡單,只需看一下示例,基本就能明白其含義了。

2.算法原理

問題描述

我們需要找出所有可能的、有效的括號序列。一個有效的括號序列指的是一個僅由'('和')'組成的字符串,并且滿足以下條件:

  1. 左括號的數量始終大于等于右括號的數量,從左到右遍歷字符串時。
  2. 左括號的總數與右括號的總數相等。
遞歸策略

我們采用遞歸的方法來解決這個問題。遞歸的核心在于,在每一步,我們都有兩種選擇:放置一個左括號或(在條件允許的情況下)放置一個右括號。

遞歸函數設計
void dfs(std::string& current, int step, int left)
  • current: 存儲當前構建的括號序列的字符串。
  • step: 當前需要填入的位置(即current字符串的長度)。
  • left: 當前狀態的字符串中已放置的左括號數量。
遞歸流程
  1. 遞歸結束條件
    • step等于目標長度(即2倍的括號對數)時,檢查current是否為一個有效的括號序列。如果是,則將其加入答案列表中。
  2. 放置左括號
    • 如果left小于目標長度的一半(即剩余的位置足夠放置等量的右括號),則可以在current的第step個位置放置一個左括號,并遞歸調用dfs函數,參數更新為step+1left+1。遞歸完成后,需要撤銷這個左括號的放置,以便嘗試其他可能性。
  3. 放置右括號
    • 如果當前已放置的右括號數量(step - left)小于已放置的左括號數量left,則可以在current的第step個位置放置一個右括號,并遞歸調用dfs函數,參數更新為step+1left(因為右括號的放置不影響左括號的數量)。同樣,遞歸完成后需要撤銷這個右括號的放置。

決策樹的演示:

3.代碼編寫

class Solution {int left, right, n;string path;vector<string> ret;public:vector<string> generateParenthesis(int _n) {n = _n;dfs();return ret;}void dfs() {if (right == n) {ret.push_back(path);return;}if (left < n) // 添加左括號{path.push_back('(');left++;dfs();path.pop_back();left--; // 恢復現場}if (right < left) // 添加右括號{path.push_back(')');right++;dfs();path.pop_back();right--; // 恢復現場}}
};

The Last

嗯,就是這樣啦,文章到這里就結束啦,真心感謝你花時間來讀。

覺得有點收獲的話,不妨給我點個吧!

如果發現文章有啥漏洞或錯誤的地方,歡迎私信我或者在評論里提醒一聲~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13349.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ssm132醫院住院綜合服務管理系統設計與開發+vue

醫院住院綜合服務管理系統的設計與實現 摘 要 互聯網發展至今&#xff0c;無論是其理論還是技術都已經成熟&#xff0c;而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網絡傳播&#xff0c;搭配信息管理工具可以很好地為人們提供服務。針對醫院住院信息管理混亂&…

【高階數據結構(四)】圖的最短路徑問題

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:高階數據結構專欄? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學習更多數據結構 ? &#x1f51d;&#x1f51d; 高階數據結構 1. 前言2. 單源最短…

第八篇 Asciidoc 輸出 All In One HTML 解決圖片無法顯示問題

問題:我的圖片顯示不出來了 小明使用 Asciidoc 來記筆記,他將筆記輸出為 HTML 文件。小麗向小明借筆記。小明將 Asciidoc 筆記輸出為 HTML文件,并拷貝給了小麗。 但是,小麗發現,圖片都顯示不出來了。 小麗:小明,你給我的筆記,圖片都顯示不出來啊。 小明:是我給你的…

析構函數詳解

目錄 析構函數概念特性對象的銷毀順序 感謝各位大佬對我的支持,如果我的文章對你有用,歡迎點擊以下鏈接 &#x1f412;&#x1f412;&#x1f412; 個人主頁 &#x1f978;&#x1f978;&#x1f978; C語言 &#x1f43f;?&#x1f43f;?&#x1f43f;? C語言例題 &…

yolov8實戰之 .pt 轉. tensorRT

1 yolo 訓練 1.1修改自己的數據集合 我是有3個類別&#xff0c;差不多這么些數據 1.2 訓練 from ultralytics import YOLO # Load a model model YOLO("yolov8m.yaml") # build a new model from scratch #model YOLO(E:/pythonCode/pythonProject1/runs/detec…

風電功率預測 | 基于PSO-BP神經網絡實現風電功率預測(附matlab完整源碼)

風電功率預測 風電功率預測完整代碼風電功率預測 基于粒子群優化算法(Particle Swarm Optimization, PSO)的BP神經網絡是一種常見的方法,用于實現風電功率預測。下面是一個基于PSO-BP神經網絡實現風電功率預測的一般步驟: 數據準備:收集與風電場發電功率相關的數據,包括…

農林科學SCI期刊,IF=6+,影響力高,對國人非常友好!

一、期刊名稱 Crop Journal 二、期刊簡介概況 期刊類型&#xff1a;SCI 學科領域&#xff1a;農林科學 影響因子&#xff1a;6.6 中科院分區&#xff1a;1區 出版方式&#xff1a;開放出版 版面費&#xff1a;$900 三、期刊征稿范圍 《作物雜志》是一份雙月刊、國際、同…

PHP使用Browsershot進行網頁截圖

Browsershot是什么 Spatie Browsershot 是一個開源PHP庫&#xff0c;它允許開發者在PHP應用程序中生成網頁的截圖。 這個庫特別適用于Laravel框架&#xff0c;但也可以在其他 PHP 應用程序中使用。 主要特點 無頭瀏覽器截圖&#xff1a;使用無頭版本的 Chrome 或 Chromium 瀏…

整理好了!2024年最常見 100 道 Java基礎面試題(四十九)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常見 100 道 Java基礎面試題&#xff08;四十八&#xff09;-CSDN博客 九十七、Class.forName 和 ClassLoader 的區別&#xff1f; Class.forName 和 ClassLoader 是Java中用于加載類的兩個不同的概念&#xff0c;它們在類…

10W 3KVAC隔離 寬電壓輸入 AC/DC 電源模塊 ——TP10AF系列

TP10AF系列輸出功率為10W&#xff0c;具有可靠性高、更小的體積、性價比高等特點&#xff0c;廣泛用于工控和電力儀器、儀表、智能家居等相關行業。

SMB攻擊利用之-mimikatz上傳/下載流量數據包逆向分析

SMB協議作為windows環境下最為常見的一種協議,在歷史上出現過無數的通過SMB協議進行網絡攻擊利用的案例,包括針對SMB協議本身以及通過SMB協議實施網絡攻擊。 本文將介紹一種通過SMB協議的常見利用方式,即向遠程主機傳輸mimikatz,作為我的專欄《SMB攻擊流量數據包分析》中的…

Oracle數據塊之數據行中的SCN

從Oracle 10g開始&#xff0c;如果在表級別打開ROW DEPENDENCIES&#xff0c;業務數據行發生更改時會在數據塊中進行登記。 可以通過DUMP數據塊來觀察上述SCN&#xff1a; &#xff08;1&#xff09;創建測試表&#xff0c;插入3條測試數據&#xff0c;插入一條提交一次。并調用…

解析建筑裝飾乙級資質標準及申請流程

建筑裝飾乙級資質標準 資歷與信譽 必須具備獨立的企業法人資格。社會信譽良好&#xff0c;注冊資本不少于100萬元人民幣。 技術條件 專業技術人員配備齊全、合理&#xff0c;滿足相應資質標準中對主要專業技術人員數量和專業的具體要求。通常包括但不限于室內設計、建筑、環境藝…

jar包增量更新分析

jdk自帶工具jdeps&#xff0c;可分析class依賴關系&#xff08;依賴的其它類和jar&#xff09;。 團隊&#xff0c;可以在此工具結果的基礎上再詳細分析對比出增量文件&#xff1b; 思路如下&#xff1a; jdeps分別分析出舊包和新包的文件依賴關系。并對比出新增的文件列表、…

前端學習第一課

AJAX 事先說明&#xff0c;這只是記錄&#xff0c;并不是從零到一的教學內容&#xff0c;如果想要學習的話&#xff0c;可以跳過本文章了 ok&#xff0c;轉回正題&#xff0c;正如上面所說&#xff0c;這只是記錄。其實我是有一定的前端基礎的&#xff0c;也做過涉及相關的開發…

【工具】macOS、window11訪問limux共享目錄\共享磁盤,samba服務安裝使用

一、samba服務安裝 Samba是一個免費的開源軟件實現&#xff0c;使得非Windows操作系統能夠與Windows系統進行文件和打印服務共享。它實現了SMB/CIFS協議&#xff0c;并且能夠在Linux、Unix、BSD等多種系統上運行。 安裝 samba&#xff1a; sudo yum install samba配置 samba…

【kali工具】NMAP 高級使用技巧

NMAP 高級使用技巧 6.1.3 NMAP 語法及示例 語法&#xff1a;nmap [Scan Type(s)] [Options] 例 1&#xff1a;使用 nmap 掃描一臺服務器 默認情況下&#xff0c;Nmap 會掃描 1000 個最有可能開放的 TCP 端口。 ┌──(root&#x1f480;xuegod53)-[~] └─# nmap 192.168…

【介紹下Python多線程,什么是Python多線程】

&#x1f308;個人主頁: 程序員不想敲代碼啊 &#x1f3c6;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f44d;點贊?評論?收藏 &#x1f91d;希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff0c;讓我們共…

【氣象常用】時間序列的線性擬合

效果圖&#xff1a; 主要步驟&#xff1a; 1. 數據準備&#xff1a;下載Hadley Centre observations datasets的HadSST數據 可參考【氣象常用】時間序列圖-CSDN博客 2. 數據處理&#xff1a;計算線性擬合 3. 圖像繪制&#xff1a;繪制折線及擬合線&#xff0c;并添加文本 …

Nacos部署選擇數據源mysql8.0,啟動報錯No DataSource Set(終極解決方案)

Nacos部署選擇數據源mysql8.0&#xff0c;啟動報錯No DataSource Set&#xff08;終極解決方案&#xff09; 選擇mysql5.7正常&#xff0c;但是選擇mysql8.0就報這個錯&#xff0c;配置都確認無問題&#xff0c;但就是用不了mysql8.0 排查了好久&#xff0c;發現是數據庫字符集…