题解 | #括号生成#

括号生成

https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

#include <string>
#include <unordered_map>
#include <vector>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return string字符串vector
     */
    vector<vector<string>>results;
    vector<string>myParenthesis;

    vector<string> generateParenthesis(int n) {
        // write code here
        vector<string>legal_results;
        if (n == 0) {
            return legal_results;
        }
        myParenthesis.emplace_back("(");
        searchParenthesis(n * 2);
	   //将results转换成合规返回形式
        for (int i = 0; i < results.size(); i++) {
            string str = "";
            for (int j = 0; j < n * 2; j++) {
                str = str + results[i][j];
            }
            legal_results.push_back(str);
        }
        return legal_results;
    }
    //将该问题用二叉树表示,根节点一定为“{”,在查找下一节点是左右括号的合法组合
    //递归查找合法组合,每当找到一个合法组合,将其装入容器中,不合法则返回
    vector<string>searchParenthesis(int m) {
        unordered_map<string, int>occur_times;
        for (int i = 0; i < myParenthesis.size(); i++) {
            occur_times[myParenthesis[i]]++;
        }
        if (myParenthesis.size() == m && occur_times["("]==occur_times[")"]) {
            results.push_back(myParenthesis);
            return myParenthesis;
        } else {
            if (occur_times["("] > m/2 || occur_times[")"] > m/2 ||occur_times[")"] > occur_times["("]) {
                return myParenthesis;
            }
        }
        myParenthesis.emplace_back("(");
        myParenthesis = searchParenthesis(m);
	  //回溯上一个状态
        myParenthesis.pop_back();
        myParenthesis.emplace_back(")");
	  //回溯上一个状态
        myParenthesis = searchParenthesis(m);
        myParenthesis.pop_back();
        return myParenthesis;
    }
};

全部评论

相关推荐

06-27 15:29
门头沟学院 Java
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
字节一直是我的白月光,考虑到转正还是拒了日常实习。
从今天开始狠狠卷JVAV_癫:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务