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

启东市住房建设局网站江苏关键词推广seo

启东市住房建设局网站,江苏关键词推广seo,网站建设 微信营销,做网站域名的好处是什么组合总和III 题目详细:LeetCode.216 做过上一题组合后,再来写这道题就显得得心应手了,通过理解回溯算法的模版,也总结出了算法中的一些特点: 回溯算法与递归算法类似,同样需要参数、结束条件和主体逻辑回…

组合总和III

题目详细:LeetCode.216

做过上一题组合后,再来写这道题就显得得心应手了,通过理解回溯算法的模版,也总结出了算法中的一些特点:

  • 回溯算法与递归算法类似,同样需要参数、结束条件和主体逻辑
  • 回溯算法我们可以将它看作是一棵二叉树,树丛根节点到叶子节点的一条路径,就是一个结果:
    • 结束条件就相当于遇到了叶子节点,保存当前路径,返回上一层
    • for循环相当于是一个选择结构,因为每个数字最多使用一次
    • 同时for循环的次数也决定了树的宽度
    • 递归的次数就相当于是for循环的嵌套次数,决定了树的深度
    • 每一次递归结束后,都要对结果进行回溯,相当于从叶子节点退回上一个节点,然后继续循环,进入下一条路径,寻找另一个结果
  • 从上述回溯过程,我们也可以发现,回溯法类似对树进行深度优先遍历,找出所有的路径,保存符合预期结果的路径,所以本质上也是一种暴力法。

Java解法(回溯,递归):

class Solution {List<List<Integer>> ans = new ArrayList<>();Deque<Integer> path = new ArrayDeque<>();public void backtracking(int k, int n, int sum, int startNum){// 结束条件,叶子节点if(path.size() == k && sum == n){this.ans.add(new ArrayList<>(path));return;}// for循环,选择节点for(int i = startNum; i <= 9; i++){this.path.offer(i);sum += i;// 递归,深度优先遍历backtracking(k, n, sum, i + 1);// 回溯,返回叶子节点的上一节点this.path.removeLast();sum -= i;// 继续循环,进入其他节点,寻找符合结果的路径}}public List<List<Integer>> combinationSum3(int k, int n) {this.backtracking(k, n, 0, 1);return this.ans;}
}

电话号码的字母组合

题目详细:LeetCode.17

这道题我一开始的思路和前两道练习搞混了,琢磨了一个钟之后,看了题解才恍然大悟,原来这道题的不同点是在于在不同集合中找组合。

详细的解释可以看题解:《代码随想录—电话号码的字母组合》

Java解法(递归, 回溯):

class Solution {public List<String> ans = new ArrayList<>();public StringBuffer path = new StringBuffer();public char[][] mapper_all = {{'a','b','c'},{'d','e','f'}, {'g','h','i'}, {'j','k','l'}, {'m','n','o'}, {'p','q','r','s'}, {'t','u','v'}, {'w','x','y','z'}};public List<String> letterCombinations(String digits) {this.backtracking(digits, 0);return this.ans;}public void backtracking(String digits, int startNum){if(path.length() == digits.length()){if(path.length() != 0){ans.add(path.toString());}return;}char[] mapper = mapper_all[digits.charAt(startNum) - '0' - 2];for(int i = 0; i < mapper.length; i++){this.path.append(mapper[i]);// 递归,注意startNum + 1,表示要处理下一个数字了backtracking(digits, startNum + 1);this.path.deleteCharAt(path.length() - 1);}}
}

注意这里for循环,可不像前两天的练习(LeetCode.77和.216)中从startIndex开始遍历的。
因为本题每一个数字代表的是不同集合,也就是求不同集合之间的组合,而之前的练习(LeetCode.77和.216)是求同一个集合中的组合!


http://www.ds6.com.cn/news/73023.html

相关文章:

  • 烟台专业做网站网络推广怎么样
  • 17网站一起做网店可靠企业类网站有哪些例子
  • 深圳品牌策划机构系统优化软件推荐
  • wordpress漂亮手机网站模板一键免费生成网页的网站
  • 免费b站推广视频百度竞价投放
  • 内网站做映射网络平台销售
  • 什么网站可以做设计兼职网页制作咨询公司
  • 兰州网站建设 冰雨优秀网站设计网站
  • 湖南网站开发公司seo快速排名工具
  • 网站的轮播图一般是做多大南京高端品牌网站建设
  • 成都网站关键词优化苏州网站排名推广
  • 做网站一定要认证吗百度竞价价格
  • 网站方案制作的培训竞价推广是做什么的
  • 电子商务网站建设完整详细流程图技能培训
  • java ee网站开发站长平台
  • 企业站seo哪家好营销推广网站
  • 电商代运营公司排名win优化大师有用吗
  • 低价网站建设新闻市场营销是做什么的
  • 景区网站建设策划案新泰网站seo
  • 一览英才网招聘信息网aso排名优化知识
  • 手机网站建设技术方案企业网站快速排名
  • 宁波网站推广多少钱一个免费发帖平台
  • 邢台123生活信息百度关键字优化
  • 网站开发公司前置审批招代理最好的推广方式
  • 如何网络推广优化保定百度seo公司
  • 手机做网站用什么怎么搜索网站
  • 阿土伯网站做产品推广咋样如何推广网站方法
  • 手机游戏开服表时间表网站怎样关键词排名优化
  • 建立网站的意义sem和seo的区别
  • 服务一流的做网站电脑培训班一般多少钱