代码随想录第二十五天|216、17不熟

  • Leetcode 216. 组合总和 III
  • Leetcode 17. 电话号码的字母组合

Leetcode 216. 组合总和 III

题目链接: 组合总和 III
自己的思路:这道题和组合很相似,应该可以做出来的,马虎好多变量写错了!

正确思路:这个题和组合问题不同的就是引入一个和的问题,所以递归函数传入参数会多一个sum参数,在最后加入path的时候要进行判断一个,满足和的条件就加入到结果中;剪枝操作会多一个,因为有一个和的问题,当当前的和大于n的时候,直接return就行了;回溯三部曲:1、传入参数:k、n、startindex和sum;2、终止条件:当sum大于n的时候,直接返回;当path的数组大小等于k而且sum等于n的时候,加入到res中;3、单层逻辑:先将i加入到path中,然后给sum加上i,然后递归,然后回溯,将i从path中拿出来,并且sum减i!!!!

代码:

class Solution {List<List<Integer>> res = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> combinationSum3(int k, int n) {backtracking(k,n,0,1);return res;}public void backtracking(int k,int n,int sum,int startindex){//剪枝if (sum>n) return;if (path.size()==k){//符合条件就加入if (sum==n){res.add(new ArrayList(path));}return;}//剪枝,和组合问题一样for (int i=startindex;i<=9-(k-path.size())+1;i++){path.add(i);sum+=i;backtracking(k,n,sum,i+1);path.removeLast();sum-=i;}}
}

复杂度分析
时间复杂度: O ( n ) \mathcal{O}(n) O(n)
空间复杂度: O ( 1 ) \mathcal{O}(1) O(1)

Leetcode 17. 电话号码的字母组合

题目链接: 电话号码的字母组合
自己的思路:感觉还是自己太懒了,不想思考,只想看题解,然后背思路,要改掉,要改掉!!!!!!其实感觉不是那么难,就是自己不想思考!!!

正确思路:这个题和之前的组合问题的区别在于现在是好几个集合,现在就不用在乎重复的问题了;我们首先要用数组或者哈希表来映射一下手机上的键值对,方便后面从中取元素;我们还要定义一个StringBuilder,因为它在字符串拼接的时候效率比较高;回溯三部曲:1、传入参数:初始字符串以及定义一个表示所指向字符串位置的指针;2、终止条件:当这个指针超出字符串的索引了,把当前字符加进去,然后返回;3、单层逻辑:先找到当前字符串中字符在map中映射的字符串,然后遍历该字符串,先加入当前字符串中字符,然后递归,然后回溯即可!!!

代码:

class Solution {List<String> res = new ArrayList<>();StringBuilder temp = new StringBuilder();String[] map = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};public List<String> letterCombinations(String digits) {if (digits==null||digits.length()==0)return res;backtracking(digits,0);return res;}public void backtracking(String digits,int index){//当指向字符串后面一个地方的时候终止if (index==digits.length()){res.add(temp.toString());return;}int in = digits.charAt(index)-'0';String letter = map[in];for (int i =0;i<letter.length();i++){temp.append(letter.charAt(i));backtracking(digits,index+1);//删除最后一个字符temp.deleteCharAt(temp.length()-1);}}
}

复杂度分析
时间复杂度: O ( n ) \mathcal{O}(n) O(n)
空间复杂度: O ( 1 ) \mathcal{O}(1) O(1)

代码随想录第二十五天|组合、电话号码的字母组合相关推荐

  1. 代码随想录 第二十四天 17.电话号码的字母组合||216.组合总和III

    216.组合总和III 力扣题目链接(opens new window) 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: ...

  2. 代码随想录第二十五天|261.组合总和、17.电话号码的字母组合

    261.组合总和 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. class Solution { private:vector& ...

  3. 【正点原子STM32连载】 第二十五章 TFTLCD(MCU屏)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  4. 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  5. 【正点原子STM32连载】 第二十五章 TFT-LCD(MCU屏)实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视 ...

  6. 25 linux ndk 头文件_正点原子Linux第二十五章RTC实时时钟实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第二十五章RTC实时时钟实验 实时时钟是很常用的一个外设 ...

  7. 第二十五章补充内容 5 不能为0的变量

    // 第二十五章补充内容 5 不能为0的变量 /*#define DEBUG #include <iostream> #include <string> using names ...

  8. 求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)

    这段时间跟二叉树杠上了,接下来还有许多二叉树的题目,虽然已经做了不少了,大多题目都涉及到了递归,也挺好,刚好有机会练习一下递归,但是遇到新的题目还是有点力不从心,还需要看参考答案,真希望有一天像汤神一 ...

  9. NeHe OpenGL第二十五课:变形

    NeHe OpenGL第二十五课:变形 变形和从文件中加载3D物体: 在这一课中,你将学会如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型.   欢迎来到这激动人心的一课,在这一课里,我们 ...

最新文章

  1. 17个Python小窍门
  2. virtualbox centos5 分辨率_一种高分辨率、高帧率的LCoS显示芯片设计方法
  3. Java NIO与IO的区别和比较
  4. calcBackProject函数(搜索小物体的位置)
  5. Transformer入门篇-深度万字长文带你轻松入门深度学习框架
  6. Hiv:SQuirrel连接hive配置
  7. 软件测试基础课程学习笔记4--测试用例设计方法技巧
  8. python打开autocad软件_python 使用pyautocad操作AutoCAD
  9. Exchange Server 2016管理系列课件17.创建和使用会议室邮箱
  10. Portal: 强叔侃墙
  11. IE和ff下javascript解释的区别
  12. C语言关键字必备练习题
  13. 深度学习——人生为数不多的好出路
  14. [链接汇总]在用Matlab解微分方程时比较有用
  15. php执行fastlane,Fastlane使用说明 自动化打包
  16. [观点]中国传统文化的遗失清单上我们丢掉了什么(作者:侯虹斌)
  17. 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
  18. html验证码图片,js+h5 canvas实现图片验证码
  19. 业务流程巡检拨测(开源工具)
  20. 微信小程序-后台使用富文本编辑器返回数据,小程序编译富文本编辑器返回的数据

热门文章

  1. ajax数据get请求params详解,Ajax的get数据拼接需要指定的params
  2. 时区的概念,日期和时间的标准及表示【整理】
  3. IIS 7、8启用nginx代理后日志中获取访客真实IP方法
  4. Web开发技术发展历史
  5. Java实现高效文章采集技巧
  6. java jax_Java,Microsoft和Pizza:2019年JAX伦敦会议的10个重点
  7. it业创业的经验之谈
  8. java hbase 查询优化_HBase的优化
  9. 拜耳推出索来多驱虫项圈,目标中国大城市养宠物女性
  10. 修改mysql中数据库存储主路径