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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

【LeetCode笔记】22.括号生成(Java、DFS回溯、剪枝、括号)

發(fā)布時(shí)間:2024/7/23 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】22.括号生成(Java、DFS回溯、剪枝、括号) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 題目描述
  • 代碼 & 解法

題目描述

  • 先吐槽:括號(hào)題好惡心。。
  • 括號(hào)有效判斷需要考慮考慮

代碼 & 解法

  • 思路:把括號(hào)分開看,這道題和20.有效的括號(hào)其實(shí)是有差別的:這道題的括號(hào)是成對(duì)的,而20題的括號(hào)則沒(méi)有這個(gè)硬性要求。
    基于此,我們可以用這么一個(gè)思路去考慮這道題:分配一個(gè)大小為2n的括號(hào)集,其中n個(gè)是左括號(hào),n個(gè)是右括號(hào)
  • 遞歸過(guò)程中需要剪枝,遞歸結(jié)束時(shí)獲得答案
  • 結(jié)果正確性:見代碼注釋1.2.
class Solution {public List<String> generateParenthesis(int n) {/**1. 如何確保不重復(fù):畫格子,走不同分枝肯定至少有一個(gè)格子不同。如下[x][x][o][x][x][x][o][o]也就是無(wú)論如何,不同分枝代表的字符串內(nèi)容肯定不相同。2. 如何跑全:因?yàn)榘怂凶笥依ㄌ?hào)組合。*/ArrayList<String> ans = new ArrayList<>();dfs(ans, n, n, "");return ans;}// ans(存儲(chǔ)答案);left(左括號(hào)剩余數(shù));right(右括號(hào)剩余數(shù));now(當(dāng)前字符串)public void dfs(ArrayList<String> ans, int left, int right, String now) {// 遞歸結(jié)束if (left == 0 && right == 0) {ans.add(now);}// 剪枝情況:如")",肯定是錯(cuò)誤順序。if (right < left) {return;}// 走左括號(hào)路線if(left > 0){dfs(ans, left - 1, right, now + "(");}// 走右括號(hào)路線if(right > 0){dfs(ans, left, right - 1, now + ")");}return;} }

總結(jié)

以上是生活随笔為你收集整理的【LeetCode笔记】22.括号生成(Java、DFS回溯、剪枝、括号)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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