Solution1:我的答案

问题1:判断n对括号序列是否合法。规定合法序列中只包含’(‘和’)‘字符,所以比较容易。’(‘和’)'合法配对即是合法。比较好的方法是基于辅助栈来做。

class Parenthesis {
public:bool chkParenthesis(string A, int n) {// write code hereif(n <= 1)return false;stack<char> temp;temp.push(A[0]);for(int i = 1; i < A.size(); i++) {if(!temp.empty() && temp.top() == '(' && A[i] == ')')temp.pop();else temp.push(A[i]);}if(temp.empty())return true;else return false;}
};

Solution 2:

问题2:
1)n对括号的合法排列个数是多少?
2)打印出n对括号的所有合法排列?
参考网址:https://blog.csdn.net/ffmpeg4976/article/details/42340379?utm_source=blogxgwz0
对于n对括号,合法的排列共有C(n,2n)−C(n+1,2n)C(n,2n) - C(n+1,2n)C(n,2n)−C(n+1,2n)种.
也就是(2n)!(n+1)!(n)!\frac{(2n)!}{(n+1)!(n)!}(n+1)!(n)!(2n)!​, 也就是C(n,2n)/(n+1)C(n,2n)/(n+1)C(n,2n)/(n+1)
打印所有排列
解法一:递归。容易理解

#include<iostream>
#include<vector>
#include<string>using namespace std;void generate_res(vector<string> &res, string tmp, int left, int right);int main() {int n = 3; //有n对括号string tmp = "";vector<string> res;generate_res(res, tmp, n, n);for (auto i : res)cout << i << endl;return 0;
}void generate_res(vector<string> &res, string tmp, int left, int right) {if (left < 0 || right < left) return;if (left == 0 && right == 0) {res.push_back(tmp);return;} else {if (left > 0) {tmp += '(';generate_res(res, tmp, left - 1, right);tmp.pop_back();}if (right > left) {tmp += ')';generate_res(res, tmp, left, right - 1);}}
}

解法二:DFS,完全按推导来(不好理解。。):

vector<string>generate(int n){vector<string> result;if (n == 0) {result.push_back("");return result;}if (n == 1) {result.push_back("()");return result;}for (int i = 1; i <= n; i++) {vector<string> left = generate(i - 1);vector<string> right = generate(n - i);for (int j = 0; j < left.size(); j++) {for (int k = 0; k < right.size(); k++) {result.push_back("("+left[j]+")" + right[k]);}}}return result;
}

程序员面试金典——9.6合法序号序列判断相关推荐

  1. C#LeetCode刷题-程序员面试金典

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...

  2. 程序员面试金典——9.9n皇后问题

    程序员面试金典--9.9n皇后问题 Solution1:我的答案,利用回溯法可做 我的答案就挺好,哈哈哈哈 class Queens { public:int nQueens(int n) {// w ...

  3. 集合栈 牛客网 程序员面试金典 C++ Python

    集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...

  4. 加法运算替代 牛客网 程序员面试金典 C++ Python

    加法运算替代 牛客网 程序员面试金典 题目描述 请编写一个方法,实现整数的乘法.减法和除法运算(这里的除指整除).只允许使用加号. 给定两个正整数int a,int b,同时给定一个int type代 ...

  5. 程序员面试金典--第k个数

    程序员面试金典--第k个数 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测试样例: 3 返回:7 逐个 ...

  6. 程序员面试金典 - 面试题 08.13. 堆箱子(DP)

    1. 题目 堆箱子.给你一堆n个箱子,箱子宽 wi.深 di.高 hi. 箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. 实现一种方法,搭出最高的一堆箱子.箱堆的高度为每 ...

  7. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  8. 《程序员面试金典》解题目录(更新完毕)

    题目来源于LeetCode上的<程序员面试金典>,这里做一个目录方便大家查找.另外有本人的LeetCode解题目录.<剑指Offer>解题目录.LintCode代码能力测试CA ...

  9. 《程序员面试金典》+《算法导论》

    <程序员面试金典>+<算法导论> 因为最近可能会面临一波面试,但是自己各种算法以及常见的问题的熟悉程度感觉还不够,但是由前几次的代码优化经验来看,算法优化可以说是代码优化的重中 ...

最新文章

  1. 将jpg图像转换成yuv420p格式
  2. new Map的妙用
  3. Boost:嵌入PTX汇编指令 直接将其添加到boost.compute函数中
  4. 前端学习(914):offerset和style区别
  5. 批量 材质 调整_寒霜引擎的PBR实践3.0(一)材质篇
  6. php获取用户当前坐标,web端定位:获取当前地理位置
  7. InvalidateRect的困惑
  8. 【优化算法】阿基米德优化算法(AOA)【含Matlab源码 1447期】
  9. POJ 2989 All Friends
  10. 基于ZFS+SAS的Tier2/backup存储系统解决方案
  11. 服务器虚拟机如何复制文件,Windows中复制虚拟机
  12. 【超级经典】程序员装B指南
  13. DSPE;CAS:1069-79-0 ;二硬脂酰基磷脂酰乙醇胺;功能化磷脂
  14. Ubuntu找不到wifi适配器问题及解决办法
  15. 测试工程师等级评定细则
  16. 百度云加速zblog和WordPress规则自定义
  17. [数据挖掘理论与案例] 大数据的4个V
  18. 通过慕课网学习Python
  19. BP或FI12维护银行账户,报错“银行帐户编号XXX必须具有长度 18”
  20. 交易系统模块划分,模块拆分,设计,重构实战.状态

热门文章

  1. 【计算机视觉-从入门到精通系列】 第三章 立体匹配
  2. Eclipse编译时函数报错:Undefined reference to 'pthread_create'
  3. linux安装或卸载mysql5,Linux环境下卸载、安装及配置MySQL5.1
  4. python解码和编码的区别_python基础小知识,is和==的区别,编码和解码
  5. nginx linux 部署web项目名,Linux部署web项目配置Nginx
  6. 解压出来的文件md5会改变吗_监控Linux文件变化,防止系统被黑
  7. android 链式结构,Android 架构师之路10 设计模式之责任链模式
  8. python静态递归函数_Python递归函数
  9. c语言中联机停止运行,Win7开机提示Microsoft(C)注册服务器已停止工作怎么办?
  10. java 防止sql注入_Java中SQL注入以及如何轻松防止它