当前位置: 首页 > news >正文

做室内设计的网站图书馆网站建设所需资料

做室内设计的网站,图书馆网站建设所需资料,网站地图模板下载,网站个人博客怎么做1.问题描述 数字 n 代表生成括号的对数#xff0c;请你设计一个函数#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例1 输入#xff1a;n 3 输出#xff1a;[((())),(()()),(())(),()(()),()()()请你设计一个函数用于能够生成所有可能的并且 有效的 括号组合。 示例1 输入n 3 输出[((())),(()()),(())(),()(()),()()()] 示例2  输入n 1 输出[()] 提示 1 n 8 难度等级 中等 题目链接 生成括号 2.解题思路 这道题要我们求出指定括号对数所能满足的所有可能想法很简单把这个过程分成无数的添加左括号和右括号的小步每一次添加之后判断是否是合法的括号形式是的话就继续不是的话就撤销回退因为我们要穷举所有的可能所以在每一步真正执行完成之后都要把当前这一步撤销回退(回溯)。 这里我们直接来看核心的递归函数是如何实现的。 首先我们要确定递归的结束条件。如果左括号的个数大于n或者右括号的个数大于左括号的个数那么情况的括号形式是非法的递归结束不做任何操作。如果右括号的个数等于n说明我们找到了一种符合题意的情况将当前这种情况加入到存储结果的List集合中然后递归结束。 //如果左括号数大于n、右括号数大于左括号数直接返回if(leftSum n || rightSum leftSum){return;}//如果右括号个数等于n,递归结束if(rightSum n){//将当前情况添加到data中data.add(sb.toString());//返回return;} 接着我们要来确定递归的结束条件。我们需要传入题目给的括号对数n当前左括号的个数和当前右括号的个数以及用来存储合法可能的List集合由于每一种可能的情况都是一个字符串这意味着我们要不断的对字符串进行增删操作所以这里我们可以传入一个StringBuilder来提高字符串操作的效率。 public void backtrack(int n,int leftSum,int rightSum,ListString data,StringBuilder sb) 然后我们就可以来确定单层的递归逻辑了。其实很简单在当前情况的基础上添加左括号然后递归调用当前方法同时左括号个数1获取当前情况基础上所有的可能情况获取到所有可能情况之后将左括号从当前情况的字符串中移除(撤销回滚)。右括号的步骤和上述差不多我就不多赘述了。 //单层递归逻辑//添加左括号sb.append(();backtrack(n,leftSum1,rightSum,data,sb);sb.delete(sb.length()-1,sb.length());//添加右括号sb.append());backtrack(n,leftSum,rightSum1,data,sb);sb.delete(sb.length()-1,sb.length()); 最后只需要在主方法中调用我们上面实现的函数并将答案返回即可。 public ListString generateParenthesis(int n) {//存储结果的ListListString data new ArrayList();//递归函数获取生成括号的对数backtrack(n,0,0,data,new StringBuilder());//返回最终答案return data;} 3.代码展示 class Solution {public ListString generateParenthesis(int n) {//存储结果的ListListString data new ArrayList();//递归函数获取生成括号的对数backtrack(n,0,0,data,new StringBuilder());//返回最终答案return data;}public void backtrack(int n,int leftSum,int rightSum,ListString data,StringBuilder sb){//如果左括号数大于n、右括号数大于左括号数直接返回if(leftSum n || rightSum leftSum){return;}//如果右括号个数等于n,递归结束if(rightSum n){//将当前情况添加到data中data.add(sb.toString());//返回return;}//单层递归逻辑//添加左括号sb.append(();backtrack(n,leftSum1,rightSum,data,sb);sb.delete(sb.length()-1,sb.length());//添加右括号sb.append());backtrack(n,leftSum,rightSum1,data,sb);sb.delete(sb.length()-1,sb.length());} } 4.总结 这道题的核心的思想其实就是递归穷举再加上一些限制条件的逻辑判断就解决了。这道题就简单的水到这里祝大家刷题愉快~
http://www.w-s-a.com/news/415382/

相关文章:

  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发
  • 网站方案书图书馆网站建设公司
  • 公司取名网免费版在线网站优化公司
  • dw怎么做秋季运动会网站九江集团网站建设
  • 响应式网站建设服务商wordpress 非小工具形式 微博秀
  • 网站安全检测漏洞扫描风险等级分布建设一个网站步骤
  • 摄影网站的意义开发企业小程序公司
  • 龙岩网站设计招聘信息网上免费logo设计
  • 高端定制网站开发建站教程详解网站共享备案可以申请支付接口
  • 做房产网站接不到电话企业推广宣传方式
  • 网站建设费用不用摊销下一页p30
  • 北京 工业网站建设公司国外服务器公司有哪些
  • 怎样局域网站建设盈利网站
  • 公司做网站广告语济南建网站价格消费品展
  • 建德网站网站建设规划设计书
  • 谷歌网站流量分析wordpress置顶浮标
  • 江苏新宁建设集团网站网络规划设计师2023论文
  • 合作建站协议python wordpress采集器
  • 集团网站网页模板网站建设图片大全
  • 举报非法网站要求做笔录wordpress怎么插视频
  • 网站服务器防护如何搭建网站平台
  • 设计师接私活的网站如何做网站的搜索栏
  • ps做图下载网站网站子目录设计