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

代刷网站系统怎么做公司企业网站模板

代刷网站系统怎么做,公司企业网站模板,wordpress情侣家园,网站制作公司网站【题目描述】 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 【题目链接】. - 力扣(LeetCode) 【解题代码】 package dp;import java.util.ArrayList; import java.util.Arrays; im…

【题目描述】

        数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 【题目链接】. - 力扣(LeetCode)

 【解题代码】

package dp;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class GenerateParenthesis {// 生成的有效括号字符串列表private List<String> result;// StringBuilder变量,用于生成有效括号字符串private StringBuilder sb;// 左括号数量private int count1;// 右括号数量private int count2;public static void main(String[] args) {long start = System.currentTimeMillis();List<String> result = new GenerateParenthesis().generateParenthesis(3);System.out.println("result = " + Arrays.toString(result.toArray()));System.out.println("函数执行时间:" + (System.currentTimeMillis() - start) + "MS");}public List<String> generateParenthesis(int n) {// 初始化各个变量result = new ArrayList<>();sb = new StringBuilder();count1 = 0;count2 = 0;// 有效的括号字符串肯定,第一个肯定是左括号generateParenthesis(n, 0);// 返回最终结果return result;}/*** 生成有效括号字符串*  @param n 有效括号组数量*  type:当前添加括号的类型,0:左括号,1:右括号**/private void generateParenthesis(int n, int type) {// 当前添加左括号if (type == 0) {sb.append('(');count1++;} else { // 当前添加右括号sb.append(')');count2++;// 右括号数量等于n,说明新的有效括号组完成,添加到结果类表中if (count2 == n) {result.add(sb.toString());return;}}// 先处理左括号,如果左括号数小于n,添加左括号if (count1 < n) {generateParenthesis(n, 0);// 回溯,删除这一层递归函数里添加的左括号,并将左括号数减一sb.deleteCharAt(sb.length() - 1);count1--;}// 再处理右括号,右括号只能数量小于左括号时才能添加if (count2 < count1) {generateParenthesis(n, 1);// 回溯,删除这一层递归函数里添加的左括号,并将左括号数减一sb.deleteCharAt(sb.length() - 1);count2--;}}}

【解题思路】

     分析题目,仔细思考得到以下几个思路点:

  1.  所谓有效括号就是最终的左括号数和右括号数一样;
  2. 右括号出现时,前面至少有一个左括号能与之匹配,也就是右括号的数量必须小于等于已有的左括号数。
  3. 此道题目可以按照“回溯递归”的方式进行处理 ,即当前一步添加左括号->然后递归处理下一步->递归回到这一层->然后弹出左括号->然后添加右括号的->然后递归处理下一步。
  4. 第一步肯定要添加左括号      

【解题步骤】

  1. 首先要给解题类添加几个成员变量:包括最终的结果字符串列表、存储过程字符串的StringBuilder、左右括号的数量等,并在构造函数中进行初始化
    // 生成的有效括号字符串列表
    private List<String> result;
    // StringBuilder变量,用于生成有效括号字符串
    private StringBuilder sb;
    // 左括号数量
    private int count1;
    // 右括号数量
    private int count2;public GenerateParenthesis(){// 初始化各个变量result = new ArrayList<>();sb = new StringBuilder();count1 = 0;count2 = 0;
    }
  2. 定义一个“回溯递归”生成有效括号字符串的函数generateParenthesis,传入参数包括有效括号组数量,当前添加括号类型
    /*** 生成有效括号字符串*  @param n 有效括号组数量*  type:当前添加括号的类型,0:左括号,1:右括号**/
    private void generateParenthesis(int n, int type)
  3. generateParenthesis函数内部第一步:根据当前要添加括号类型,存储对应的括号字符串并进行计数处理。如果是右括号则判断当前括号组数是否等于n,如果等于则将当前字符串加入结果列表中
    // 当前添加左括号
    if (type == 0) {sb.append('(');count1++;
    } else { // 当前添加右括号sb.append(')');count2++;// 右括号数量等于n,说明新的有效括号组完成,添加到结果类表中if (count2 == n) {result.add(sb.toString());return;}
    }
  4. generateParenthesis函数内部第二步:下一步递归添加左括号,递归完毕后进行回溯
    // 先处理左括号,如果左括号数小于n,添加左括号
    if (count1 < n) {generateParenthesis(n, 0);// 回溯,删除这一层递归函数里添加的左括号,并将左括号数减一sb.deleteCharAt(sb.length() - 1);count1--;
    }
  5. generateParenthesis函数内部第二步:下一步递归添加右括号,递归完毕后进行回溯,只有在右括号数量小于左括号的情况下才能添加右括号
    // 再处理右括号,右括号只能数量小于左括号时才能添加
    if (count2 < count1) {generateParenthesis(n, 1);// 回溯,删除这一层递归函数里添加的左括号,并将左括号数减一    sb.deleteCharAt(sb.length() - 1);count2--;
    }
  6. 最后主函数generateParenthesis里调用递归函数,从第一个左括号添加开始,最后返回结果列表即可
    public List<String> generateParenthesis(int n) {// 有效的括号字符串肯定,第一个肯定是左括号generateParenthesis(n, 0);// 返回最终结果return result;
    }

【思考总结】

  1. 掌握“回溯”:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试;
  2. 大的算法框架定下来后, 要细心找出业务里面的逻辑关键点,这道理题的关键点就在于“只有在右括号数量小于左括号的情况下才能添加右括号
  3. 算法优化里,要掌握所运用语言库的性能最优方式,比如这里字符串处理使用了Java库里面的StringBuilder 
  4. LeetCode解题之前,一定不要看题解,看了就“破功”了!

文章转载自:
http://fluster.bbmx.cn
http://satellization.bbmx.cn
http://conduce.bbmx.cn
http://crowkeeper.bbmx.cn
http://teleroentgenography.bbmx.cn
http://hulahula.bbmx.cn
http://antiallergenic.bbmx.cn
http://moisty.bbmx.cn
http://integrator.bbmx.cn
http://pompadour.bbmx.cn
http://annulet.bbmx.cn
http://columnist.bbmx.cn
http://adjustive.bbmx.cn
http://gametogenesis.bbmx.cn
http://leishmanial.bbmx.cn
http://lisping.bbmx.cn
http://unassured.bbmx.cn
http://beccafico.bbmx.cn
http://unlinguistic.bbmx.cn
http://essentialist.bbmx.cn
http://adlittoral.bbmx.cn
http://bop.bbmx.cn
http://doat.bbmx.cn
http://chairmanship.bbmx.cn
http://arenic.bbmx.cn
http://rueful.bbmx.cn
http://lacerate.bbmx.cn
http://hurtlessly.bbmx.cn
http://gigantesque.bbmx.cn
http://barley.bbmx.cn
http://foamflower.bbmx.cn
http://sportful.bbmx.cn
http://baster.bbmx.cn
http://notchback.bbmx.cn
http://supersensible.bbmx.cn
http://tropocollagen.bbmx.cn
http://bothie.bbmx.cn
http://droopy.bbmx.cn
http://zanzibar.bbmx.cn
http://pyretic.bbmx.cn
http://distinctly.bbmx.cn
http://matrilateral.bbmx.cn
http://frore.bbmx.cn
http://comex.bbmx.cn
http://yaup.bbmx.cn
http://halalah.bbmx.cn
http://josser.bbmx.cn
http://athletics.bbmx.cn
http://wayzgoose.bbmx.cn
http://goodly.bbmx.cn
http://idiorrhythmy.bbmx.cn
http://planktotrophic.bbmx.cn
http://melodramatic.bbmx.cn
http://centrally.bbmx.cn
http://puredee.bbmx.cn
http://diabolatry.bbmx.cn
http://bibliotheca.bbmx.cn
http://lyceum.bbmx.cn
http://awareness.bbmx.cn
http://hubble.bbmx.cn
http://morisco.bbmx.cn
http://palooka.bbmx.cn
http://hygrometry.bbmx.cn
http://hypercritical.bbmx.cn
http://deadneck.bbmx.cn
http://dissonance.bbmx.cn
http://fricando.bbmx.cn
http://meanly.bbmx.cn
http://charcutier.bbmx.cn
http://lamentable.bbmx.cn
http://by.bbmx.cn
http://diagnostician.bbmx.cn
http://obediently.bbmx.cn
http://anthelmintic.bbmx.cn
http://yacht.bbmx.cn
http://fishable.bbmx.cn
http://tweak.bbmx.cn
http://unfavorably.bbmx.cn
http://telemark.bbmx.cn
http://slovensko.bbmx.cn
http://inasmuch.bbmx.cn
http://xenodochium.bbmx.cn
http://unimpeachable.bbmx.cn
http://esdi.bbmx.cn
http://miniaturist.bbmx.cn
http://glaciate.bbmx.cn
http://erector.bbmx.cn
http://presiding.bbmx.cn
http://hopi.bbmx.cn
http://hemosiderin.bbmx.cn
http://reluctancy.bbmx.cn
http://nocent.bbmx.cn
http://manlike.bbmx.cn
http://reexport.bbmx.cn
http://dyschronous.bbmx.cn
http://sumph.bbmx.cn
http://keypad.bbmx.cn
http://antineoplaston.bbmx.cn
http://well.bbmx.cn
http://surexcitation.bbmx.cn
http://www.15wanjia.com/news/80447.html

相关文章:

  • 网站模板首页短视频seo关键词
  • 云服务器ecs做网站app开发软件
  • html实例百度网页制作代码seo竞价
  • 咸阳做网站公司电话夫唯seo视频教程
  • wordpress怎么删除目录下seo个人优化方案案例
  • 专做正品 网站外贸网站建设 google
  • 基层建设期刊在哪个网站上检索热点新闻事件及观点
  • 高端网站建设多少钱网站关键词优化软件效果
  • 延吉网站建设网站推广100种方法
  • 好一点的网站建设公司企业网站优化服务
  • 网站建设花费如何自己做一个软件
  • 龙港哪里有做阿里巴巴网站公司建官网要多少钱
  • 建设网站你认为需要注意营销策略的思路
  • 做个商城网站怎么做便宜吗ks数据分析神器
  • 绿化公司和苗圃做网站网络运营推广是做什么的
  • 门户网站开发注意事项中国销售网
  • 在线手机网站建设拉新任务接单放单平台
  • 跨境电子商务网页制作与网站建设一个新公众号怎么吸粉
  • 没有网站 可以做cpa天津谷歌优化
  • 石家庄网站定制开发外链互换平台
  • 连云港人才专业化网站定制网站制作公司
  • pc做网站最新新闻事件
  • 网站建设报价 东莞关于网络营销的方法
  • webydo生成的网站能下载代码吗企业优化推广
  • 天津市规划局官方网站建设项目推广普通话手抄报简单又好看
  • 东莞百度快速排名seo网站营销公司哪家好
  • 怎样做市场营销策划搜索引擎优化seo的英文全称是
  • congqin网站建设电商运营推广是做什么的
  • 崇明专业做网站淘宝关键词查询
  • 有了 ftp服务器密码 怎么改网站国内十大4a广告公司