回溯----5.括號生成

題目鏈接

/**

? ? ? ? ? ? 合法括號生成規則:

? ? ? ? ? ? ? ? ? ? ? ? ? ? 第一個括號必須是左括號(第一個為右必定無法閉合)

? ? ? ? ? ? ? ? ? ? ? ? ? ? 選擇過程中左括號數量必須小于n才可選擇左括號(大于n則一定有括號無法閉合)

? ? ? ? ? ? ? ? ? ? ? ? ? ? 左括號數量必須大于右括號數量才可選擇右括號(相等代表所有前驅括號都已閉合)

? ? ? ? ? ? 所需參數:

? ? ? ? ? ? ? ? ? ? ? ? ? ? left 記錄已選擇左括號數

? ? ? ? ? ? ? ? ? ? ? ? ? ? right 記錄已選擇右括號數

? ? ? ? ? ? 限制條件:

? ? ? ? ? ? ? ? ? ? ? ? ? ? 由于括號必定從左括號開始的特性,左括號優先級高于右括號

? ? ? ? ? ? ? ? ? ? ? ? ? ? left < n --> 避免左括號超量,導致無足夠右括號與之閉合

? ? ? ? ? ? ? ? ? ? ? ? ? ? left > right --> 括號未全部閉合,可選擇右括號與之閉合

? ? ? ? ? ? ? ? ? ? ? ? ? ? 兩條件共同保證括號生成合法性 ? ? ? ? ? ? ?

*/

class Solution {//保存結果集private List<String> res = new ArrayList<>();//保存單次結果private StringBuilder tempResult = new StringBuilder();private int n;public List<String> generateParenthesis(int n) {/**合法括號生成規則:第一個括號必須是左括號(第一個為右必定無法閉合)選擇過程中左括號數量必須小于n才可選擇左括號(大于n則一定有括號無法閉合)左括號數量必須大于右括號數量才可選擇右括號(相等代表所有前驅括號都已閉合)所需參數:left 記錄已選擇左括號數right 記錄已選擇右括號數限制條件:由于括號必定從左括號開始的特性,左括號優先級高于右括號left < n --> 避免左括號超量,導致無足夠右括號與之閉合left > right --> 括號未全部閉合,可選擇右括號與之閉合兩條件共同保證括號生成合法性              */this.n = n;backtrack(0,0);return res;}private void backtrack(int left, int right) {//生成完畢,保存結果if(left + right == 2*n) {res.add(tempResult.toString());return;}//左括號未到上限可選擇左括號if(left < n) { tempResult.append("(");left++;backtrack(left,right);//回溯left--;tempResult.deleteCharAt(tempResult.length() - 1);}//左括號未全部與右括號匹配,可選擇右括號if(left > right) {tempResult.append(")");right++;backtrack(left,right);//回溯right--;tempResult.deleteCharAt(tempResult.length() - 1);}}
}

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

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

相關文章

【weaviate】分布式數據寫入之LSM樹深度解析:讀寫放大的權衡

文章目錄 一、LSM樹的設計哲學&#xff1a;寫優化的根本動機1、 傳統B樹存儲的性能瓶頸2、 LSM樹的根本性創新 二、寫入路徑的深度技術分析1、 WAL機制的精密設計2、 MemTable的數據結構3、 刷盤&#xff08;Flush&#xff09;過程的技術細節 三、Compaction策略&#xff1a;LS…

Pygame 大魚吃小魚

【Pygame 大魚吃小魚】是一款基于Python編程語言和Pygame庫開發的趣味游戲。Pygame是Python中一個廣泛用于開發2D游戲的開源模塊集合&#xff0c;它提供了豐富的功能&#xff0c;如窗口管理器、事件處理、圖形繪制等&#xff0c;使得初學者也能快速上手創建游戲。 這段 Python …

【為什么在觸發的事件中修改控件屬性需要使用`Invoke`】

在C#中&#xff0c;特別是在使用Windows Forms或WPF等GUI框架時&#xff0c;控件的屬性和狀態通常只能在創建它們的線程&#xff08;即UI線程&#xff0c;即主線程或用戶界面線程&#xff09;中直接修改。這是由于這些框架的設計基于單線程模型&#xff0c;其中所有與用戶界面&…

Android 當apk是系統應用時,無法使用webView的解決方案

最近在做項目時&#xff0c;遇到了一個無法使用webView的問題&#xff0c;apk是系統應用&#xff0c;點擊加載webView時應用就是崩潰&#xff0c;原因是系統應用時&#xff0c;Android會覺得webView不安全&#xff0c;不避讓加載。 解決的思路就是使用映射&#xff0c;把原生的…

ArcGIS Pro無插件加載(無偏移)天地圖!一次添加長久使用

以前我們介紹過&#xff1a;ArcGIS無插件加載&#xff08;無偏移&#xff09;天地圖。這次我們來介紹ArcGIS Pro中如何添加天地圖。 我們將通過從天地圖官網自己添加服務鏈接并添加至收藏的方式以及應急的方法來做本次的介紹。天地圖的數據主要包括影像、電子地圖、地形圖等。我…

Go堆內存管理

# Go堆內存管理 1. Go內存模型層級結構 Golang內存管理模型與TCMalloc的設計極其相似。基本輪廓和概念也幾乎相同&#xff0c;只是一些規則和流程存在差異。 2. Go內存管理的基本概念 Go內存管理的許多概念在TCMalloc中已經有了&#xff0c;含義是相同的&#xff0c;只是名字…

零售 EDI:Chewy EDI 項目注意事項

在此前的文章《供應商對接Chewy的EDI需求》中&#xff0c;介紹了Chewy的EDI需求&#xff0c;本文主要為大家分享Chewy對于各個業務單據的細節性需求&#xff0c;了解這些細節性注意事項將幫助企業快速基于知行軟件提供的EDI服務與Chewy建立EDI對接。 基于知行之橋EDI系統能夠通…

Android錄制視頻自帶鋪滿多行水印

文章目錄 引言環境要求代碼實現總結 引言 之前做過幾種水印需求&#xff0c;這篇文章是關于使用Android原生庫開發錄制視頻自帶滿幀文字水印。 環境要求 Android 7.0以上Android Studio &#xff0c;官方開發者官網視頻錄制功能參考開源庫PictureSelector的camerax庫 //用到的…

觀遠ChatBI:加速零售消費企業數據驅動的敏捷決策

近年來&#xff0c;隨著國產大模型&#xff08;如DeepSeek&#xff09;的快速發展&#xff0c;企業對智能化數據分析工具的需求日益增長。觀遠數據推出的ChatBI&#xff0c;基于大語言模型&#xff08;LLM&#xff09;打造&#xff0c;旨在通過自然語言交互降低數據分析門檻&am…

鴻蒙NEXT-鴻蒙三層架構搭建,嵌入HMRouter,實現便捷跳轉,新手攻略。(1/3)

接下來&#xff0c;我將手把手帶領大家去完善&#xff0c;搭建一個鴻蒙的三層架構&#xff0c;另實現HMRouter的嵌入。完成后&#xff0c;大家可任意跳轉頁面&#xff0c;在三層架構中&#xff0c;書寫屬于自己的篇章。 第0步&#xff0c;項目與AGC華為控制臺關聯起來 首先AG…

鴻蒙ArkTs仿網易云音樂項目:架構剖析與功能展示

鴻蒙ArkTs仿網易云音樂項目&#xff1a;架構剖析與功能展示 一、引言 在移動應用開發的浪潮中&#xff0c;音樂類應用始終占據著重要的一席之地。網易云音樂憑借其豐富的音樂資源、個性化的推薦算法和獨特的社交互動功能&#xff0c;深受廣大用戶的喜愛。本文將詳細介紹一個基…

【web 安全】從 HTTP 無狀態到現代身份驗證機制

文章目錄 Web 安全與系統設計Web存在的問題&#xff1a;Web 是無狀態的解決方案一、早期解決方案&#xff1a;Session Cookie 的誕生二、第二階段&#xff1a;Token 的出現&#xff08;前后端分離 移動端的解決方案&#xff09;三、分析總結&#xff1a;1.早期版本&#xff1…

FlutterUnit TolyUI | 布局游樂場

FlutterUnit 基于 TolyUI 大大簡化了界面構建的代碼復雜程度&#xff0c;因此之前想要實現的一些小功能&#xff0c;就可以輕松支持。布局游樂場是通過交互的方式來 直觀體驗 組件的布局特性&#xff0c;從而更易學和掌握。目前 FlutterUnit 已在 知識集錄模塊新增了 布局寶庫&…

【數據分析一:Data Collection】信息檢索

本節內容含有各典型數據集的推薦&#xff0c;以及其網址&#xff0c;大家根據需要自取 一、檢索 最簡單、最靈活的數據獲取方式就是依靠檢索&#xff1a; Google&#xff1a;更適合搜索英文信息 Google Dataset Search&#xff08;Google 數據集搜索&#xff09; 網址&…

23.ssr和csr的對比?如何依賴node.js實現

1.為什么說ssr 的node中間層請求速度快。相當于內網&#xff1f; 那vue.js加載怎么沒有ssr和csr的說法啊 第一問&#xff1a;為什么說 SSR 的 Node 中間層請求速度快&#xff1f;是不是相當于內網&#xff1f; ? 是的&#xff0c;本質上就是「內網請求」&#xff0c;所以更快…

力扣刷題(第六十四天)

靈感來源 - 保持更新&#xff0c;努力學習 - python腳本學習 第一個錯誤的版本 解題思路 初始化左右邊界&#xff1a;左邊界 left 1&#xff0c;右邊界 right n。二分查找循環&#xff1a; 計算中間版本號 mid。若 mid 是錯誤版本&#xff0c;說明第一個錯誤版本在 [le…

【圖像處理入門】11. 深度學習初探:從CNN到GAN的視覺智能之旅

摘要 深度學習為圖像處理注入了革命性動力。本文將系統講解卷積神經網絡(CNN)的核心原理,通過PyTorch實現圖像分類實戰;深入解析遷移學習的高效應用策略,利用預訓練模型提升自定義任務性能;最后揭開生成對抗網絡(GAN)的神秘面紗,展示圖像生成與增強的前沿技術。結合代…

C++法則4: 如果一個構造函數的第一個參數是自身類類型的引用,且任何額外參數都有默認值,則此構造函數是拷貝構造函數。

C法則4&#xff1a; 如果一個構造函數的第一個參數是自身類類型的引用&#xff0c;且任何額外參數都有默認值&#xff0c;則此構造函數是拷貝構造函數。 拷貝構造函數的定義&#xff1a; 第一個參數是自身類類型的引用&#xff1a; 必須是引用&#xff08;通常為const引用&…

從頭搭建環境安裝k8s遇到的問題

基本信息 master節點IP&#xff1a; 172.31.0.3 node01節點IP&#xff1a;172.31.0.4 node02節點IP&#xff1a;172.31.0.5 子網掩碼&#xff1a;255.255.0.0 網關&#xff1a;172.31.0.2 DNS:114.114.114.114 安裝前要檢查的信息 檢查三臺主機的mac地址是否重復&#xff1a…

Flask入門指南:從零構建Python微服務

1. Flask 是什么&#xff1f; Flask 是一個 微框架&#xff08;Microframework&#xff09;&#xff0c;特點包括&#xff1a; 輕量靈活&#xff1a;核心僅包含路由和模板引擎&#xff0c;其他功能通過擴展實現易于學習&#xff1a;代碼直觀&#xff0c;適合快速開發小型應用…