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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

22. 括号生成

發布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 22. 括号生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知乎ID: 碼蹄疾?
碼蹄疾,畢業于哈爾濱工業大學。?
小米廣告第三代廣告引擎的設計者、開發者;?
負責小米應用商店、日歷、開屏廣告業務線研發;
主導小米廣告引擎多個模塊重構;?
關注推薦、搜索、廣告領域相關知識;

題目

給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的并且有效的括號組合。

例如,給出 n = 3,生成結果為:

分析

做題題感也蠻重要的,凡是這種生成全排列,滿足條件的排列,大部分情況下都要用遞歸。
首先左右括號必須相等。先確定前綴,然后遞歸,遞歸條件就是剩下的左括號數目,和剩下的右括號數目。
比如:
( , ?leftCount = 1, rightCount = 0;
就可以把題目轉化為:在左括號數目為3-1 = 2,右括號數目是3 - 0 = 3的解。

code

public class Solution {public List<String> generateParenthesis(int n) {ArrayList<String> list = new ArrayList<String>();String s = "";parenthesis(list, s, n, n);return list;}public void parenthesis(ArrayList<String> list, String s, Integer left, Integer right) {if (left == 0 && right == 0) {list.add(s);}if (left > 0) {parenthesis(list, s + '(', left - 1, right);}if (right > 0 && left < right) {parenthesis(list, s + ')', left, right - 1);}} }

? ?微信掃碼關注更多題解!

?

轉載于:https://www.cnblogs.com/acceml/p/9282035.html

總結

以上是生活随笔為你收集整理的22. 括号生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。