Day 25 | 216.组合总和III & 17.电话号码的字母组合

真的好难。。。递归。。。还回溯。。。我只能勉强看懂,自己完全做不出来。。有点小崩、、谁懂

1.13二刷:我草。。看了第一题组合之后。。这两道题我完全自己做出来了。。我草!!!!!!!第一次收到编程的正反馈。。感动哭了。。。

216.组合总和III 

本题和昨天的组合类似,多加了一个判断条件sum值。少了数字范围限制,固定都是从1至9.

因此递归结束条件不仅要判断path个数是否符合k,还要判断sum值是否为n。

循环体中,每次将i加入path,同时sum+=i,递归结束后sum-=i,并回溯移除path的最后一个元素

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    LinkedList<Integer> path = new LinkedList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
        combinationSum(k, n, 1, 0);
        return res;
    }

    public void combinationSum(int k, int n, int startIndex, int sum) {
        if(startIndex-1>n){return;}
        if (path.size() == k) {
            if (sum == n) {
                res.add(new ArrayList<>(path));
                return;
            }
        }

        for (int i = startIndex; i <= 9; i++) {
            path.add(i);
            sum += i;
            combinationSum(k, n, i + 1,sum);
            sum -= i;
            path.removeLast();
        }
    
    }
}

17.电话号码的字母组合

难死了。。。。。。。。。。。。。还要不停数字和字符串相互转化。。(不过好像有点摸到门路了?) 

        定义list集合作为返回结果,numString字符串数组存放每个数组包含的字符,digit为题目给出的数字组合,num代表当前遍历到digit的第几个数字了,num数字所代表的的字符组合用str表示。定义StringBuilder类型的temp对字符串进行添加和删除。

终止条件:当遍历完digit包含的所有数字时,即num==digit.length,递归结束。

循环体:遍历当前num的每一个字符,添加到temp中,然后递归调用该函数,num=num+1,若符合终止条件则将当前temp添加到结果集中。否则继续遍历。遍历完成后回溯删除当前遍历的字符,进行下一次循环。

class Solution {
    //设置全局列表存储最后的结果
    List<String> list = new ArrayList<>();

    public List<String> letterCombinations(String digits) {
        if (digits == null || digits.length() == 0) {
            return list;
        }
        //初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""
        String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        //迭代处理
        backTracking(digits, numString, 0);
        return list;

    }

    //每次迭代获取一个字符串,所以会设计大量的字符串拼接,所以这里选择更为高效的 StringBuild
    StringBuilder temp = new StringBuilder();

    //比如digits如果为"23",num 为0,则str表示2对应的 abc
    public void backTracking(String digits, String[] numString, int num) {
        //遍历全部一次记录一次得到的字符串
        if (num == digits.length()) {
            list.add(temp.toString());
            return;
        }
        //str 表示当前num对应的字符串
        String str = numString[digits.charAt(num) - '0'];
        for (int i = 0; i < str.length(); i++) {
            temp.append(str.charAt(i));
            backTracking(digits, numString, num + 1);
            //剔除末尾的继续尝试
            temp.deleteCharAt(temp.length() - 1);
        }
    }

}

tttowo
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python库 | onegov.election_day-1.12.1.tar.gz
05-20
资源分类:Python库 所属语言:Python 资源全名:onegov.election_day-1.12.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Python库 | onegov.election_day-0.1.6.tar.gz
05-20
资源分类:Python库 所属语言:Python 资源全名:onegov.election_day-0.1.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Day25|216.组合总和III | 17.电话号码字母组合
m0_74107946的博客
06-18 91
private void travelsal(int k,int n,int sum,int startIndex)//travelsal是遍历的意思。//注意字符串不是字符,要用charAt()//当然你这里也可以写i< 9-(k - path.size())+1。
算法Day25 | 216.组合总和III17.电话号码字母组合
雨后的放线君
06-03 119
zsbd
代码随想录Day25 | 216.组合总和III 17.电话号码字母组合
sRiddle的博客
01-20 412
Day25
LeetCode Day25 | 216. 组合总和 III17. 电话号码字母组合
m0_37830008的博客
03-25 138
LeetCode 216. 组合总和 III17. 电话号码字母组合
【LeetCode打卡】Day25|216.组合总和III17.电话号码字母组合
qq_56832705的博客
03-03 413
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
代码随想录day25| 216.组合总和III17.电话号码字母组合
m0_57290240的博客
10-10 130
注意这个index可不是 77.组合 (opens new window)和216.组合总和III (opens new window)中的startIndex了。在C++中,数组的初始化方式是使用花括号({})而不是方括号([])。这个index是记录遍历第几个数字了,就是用来遍历digits的(题目中给出数字字符串),同时index也表示树的深度。前两个题目是在一个集合中收集元素,所以需要startIndex以避免元素重复。本题是多个集合,所以需要index来记录目前在哪个集合里面取数。
算法记录Day25| 216.组合总和III17.电话号码字母组合
miyu325的博客
12-17 100
打卡216.组合总和III17.电话号码字母组合
代码随想录day25216.组合总和III17.电话号码字母组合|Golang
weixin_42161901的博客
10-15 431
笔记
算法训练day25||216.组合总和III |17.电话号码字母组合
weixin_64200950的博客
10-15 208
定义一个全局变量vectorpath用于存下遍历从根节点到叶子节点,定义一个vectorresult存在满足条件的path,返回值是void ,参数是k,n,还有startIndex,startIndex代表是下一次for循环的起始位置,为什么需要startIndex,因为组合的数字的不能重复的数字,来避免重复。二、遍历的时候将数字转化为对应的字符串,然后for循环遍历,for循环里面包含递归逻辑。2.数字的长度代表递归遍历的层数,for循环用于遍历数字映射出的字符串。
Python库 | onegov.election_day-1.9.0.tar.gz
04-12
资源分类:Python库 所属语言:Python 资源全名:onegov.election_day-1.9.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Python库 | onegov.election_day-1.19.2.tar.gz
03-09
python库。 资源全名:onegov.election_day-1.19.2.tar.gz
Python库 | onegov.election_day-1.15.8.tar.gz
03-07
python库。 资源全名:onegov.election_day-1.15.8.tar.gz
轻量级 ioc/aop 框架 loveqq 1.0 发布,完全替换掉若依底层 spring 及其 starter
最新发布
kfyty725的博客
06-18 134
【代码】轻量级 ioc/aop 框架 loveqq 1.0 发布,完全替换掉若依底层 spring 及其 starter。
【仿真建模-anylogic】FlowchartPort原理解析
zhaoyaxuan001的博客
06-14 355
FlowchartPort是流图组件端口的基类,一般不会直接使用;如果需要自行封装组件库时会用到;FlowchartPort继承Port类,并定义了一系列抽象函数;用于输入端口判定此刻是否不能接收Agent。用于输出端口判定是否有Agent准备离开。判定端口是否发生错误。
Spring Boot集成antlr实现词法和语法分析
HBLOG
06-13 893
Antlr4 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR;Lex Machina将ANTLR用于分析法律文本;Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR;NetBeans公司的IDE使用ANTLR来解析C++;
探讨 MyBatis 特殊 SQL 执行技巧与注意事项
良月柒
06-18 235
/MyBatis 作为一个灵活的持久层框架,通过提供丰富的动态 SQL 标签、SQL 片段复用、存储过程调用、复杂结果集处理、分页查询和批量操作等功能,使开发者能够高效地实现各种复杂的 SQL 操作。
怎么判断 aDay.DialyType = DialyData.EDialyType.EDialyType_Normal | DialyData.EDialyType.EDialyType_Weekend | DialyData.EDialyType.EDialyType_Extra; 其中一个类型2个类型
05-29
这段代码使用了位运算符“|”将三个枚举值进行了按位或运算,最终将三个枚举值合并成了一个值。...if ((aDay.DialyType & DialyData.EDialyType.EDialyType_Normal) != 0) { // 包含EDialyType_Normal类型 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • [贪心]376. 摆动序列 & 53. 最大子序和 & 122.买卖股票的最佳时机II & 55. 跳跃游戏 & 45. 跳跃游戏II 1773
  • 860.柠檬水找零 & 406.根据身高重建队列 & 452. 用最少数量的箭引爆气球 & 435. 无重叠区间 1645
  • 1005.K次取反后最大化的数组和 & 135. 分发糖果 & 134. 加油站 1418
  • 56. 合并区间 & 738.单调递增的数字 1240
  • 647. 回文子串 & 516. 最长回文子序列 877

最新评论

  • Day 01|704. 二分查找 & 27.移除元素

    CSDN-Ada助手: 不知道 算法 技能树是否可以帮到你:https://edu.csdn.net/skill/algorithm?utm_source=AI_act_algorithm

大家在看

  • Python数据分析工程师的技术栈
  • 560. 和为 K 的子数组
  • 4款.NET开源、功能强大的Windows桌面工具箱
  • oracle的堆栈的实现方式 228
  • 240. 搜索二维矩阵 II

最新文章

  • 冒泡排序 & 插入排序 & 选择排序
  • 647. 回文子串 & 516. 最长回文子序列
  • 583. 两个字符串的删除操作 & 72. 编辑距离
2023年16篇
2022年55篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网闹闹女巫店一周运势win101709搜狐财经博客免费八字起名字测试打分的宝宝起乳名猪年婴儿百年家书起名大全专业大师五行属水的起名生辰八字起名字官网一般快递费多少钱傻子上学小品台词小饭店起个啥名字宋姓男孩起名单名老板键金晨邓伦摩擦摩擦是什么歌无人机科技公司起名新公司名字起名大全2020四川经济频道超级机器人大战a攻略2000年春晚节目单五行属金 男孩起名红木家具公司起名gre是什么意思电梯公司起名字大全免费女孩起名姓氏袁清明上河图描绘的是哪个城市海南旅游卫视14画属火的吉祥字起名字用曹起名男生名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化