代码随想录算法训练营第二十五天| 216. 组合总和 III、17. 电话号码的字母组合

[LeetCode] 216. 组合总和 III

[LeetCode] 216. 组合总和 III 文章解释

[LeetCode] 216. 组合总和 III 视频解释

题目:

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

  • 只使用数字1到9
  • 每个数字 最多使用一次 

返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]
解释:
1 + 2 + 4 = 7
没有其他符合的组合了。

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
解释:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
没有其他符合的组合了。

示例 3:

输入: k = 4, n = 1
输出: []
解释: 不存在有效的组合。
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。

提示:

  • 2 <= k <= 9
  • 1 <= n <= 60

[LeetCode] 216. 组合总和 III

自己看到题目的第一想法

    在 1... 9 一共 9 个数字中, 选出 k 个和为 n 的数字. 可以用递归(回溯)的方式, 遍历 9 个数字, 每次挑选出一个, 选出总和为 k 的序列即可.

看完代码随想录之后的想法

    想法基本是一致的.

class Solution {
    private List<Integer> path = new ArrayList<>();
    private List<List<Integer>> result = new ArrayList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
        backTracking(k, n, 0, 1);
        return result;
    }
    private void backTracking(int numberCount, int targetSum, int sum, int startIndex) {
        if (path.size() == numberCount) {
            if (targetSum == sum) {
                result.add(new ArrayList<>(path));
            }
            return;
        }
        for (int i = startIndex; i <= 9 && i <= targetSum - sum; i++) {
            path.add(i);
            backTracking(numberCount, targetSum, sum + i, i + 1);
            path.remove(path.size() - 1);
        }
    }
}

自己实现过程中遇到哪些困难

    无

[LeetCode] 17. 电话号码的字母组合

[LeetCode] 17. 电话号码的字母组合 文章解释

[LeetCode] 17. 电话号码的字母组合 视频解释

题目:

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。

[LeetCode] 17. 电话号码的字母组合

自己看到题目的第一想法

    第一反应是, 数字到字母表需要有个映射, 写个函数保存到 Map<Character, String> 中.

    遍历字符串中的每一个元素, 把该元素映射到对应的字母表, 遍历字母表选取其中一个字母, 添加到结果集, 然后开始递归选取下一个元素, 再将下一个元素映射到对应的字母表, 再遍历新的字母表选取其中一个字母, 添加到结果集. 当完成后, 就形成了最终的结果集.

看完代码随想录之后的想法

    基本上是一致的.

    1. 数字到字母表的映射可以用字符串数组

    2. 从字符串数组中获取数字可以使用 ch - '0' 的方式获取到对应的索引值

class Solution {
    private List<String> result = new ArrayList<>();
    private StringBuilder strBuilder = new StringBuilder();
    String[] numberToChars = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    public List<String> letterCombinations(String digits) {
        if (digits == null || digits.length() == 0) {
            return result;
        }
        backTracking(digits, 0);
        return result;
    }
    // 这里的 index 表示当前处理的是哪一个字母
    private void backTracking(String digits, int index) {
        if (digits.length() == strBuilder.length()) {
            result.add(strBuilder.toString());
            return;
        }
        String chars = numberToChars[digits.charAt(index) - '0'];
        for (int i = 0; i < chars.length(); i++) {
            strBuilder.append(chars.charAt(i));
            backTracking(digits, index + 1);
            strBuilder.deleteCharAt(strBuilder.length() - 1);
        }
    }
}

自己实现过程中遇到哪些困难

    没想到可以用 ch - '0' 的方式, 计算出当前字符串对应的数字的值.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 常用命令 详细大全【分步详解】

1、启动和停止MySQL服务 // 暂停服务 默认 80 net stop mysql80// 启动服务 net start mysql80// 任意地方启动 mysql 客户端的连接 mysql -u root -p 2、输入密码 3、数据库 4、DDL&#xff08;Data Definition Language &#xff09;数据 定义语言, 用来定义数据库对象(数…

电子电器架构 --- 智能座舱技术分类

电子电器架构 — 智能座舱技术分类 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,…

如何修改cPanel面板的语言

本周有一个客户&#xff0c;购买Hostease的主机&#xff0c; 客户购买的是Linux虚拟主机&#xff0c;带cPanel面板的。询问我们的在线客服&#xff0c;他想修改cPanel面板的默认语言。Hostease虚拟主机默认英语&#xff0c;客户想要修改成中文。 在cPanel面板中修改语言设置是一…

怎么看新手入门学Java?

对于新手来说&#xff0c;学习Java是一个既令人兴奋又可能令人畏惧的过程。Java作为一种强类型、面向对象的编程语言&#xff0c;它广泛应用于企业级应用、Android开发、大数据和云计算等领域。因此&#xff0c;Java不仅有着庞大的生态系统&#xff0c;还拥有稳定的市场需求&am…

curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL

source ~/.bash_profile flutter clean Command exited with code 128: git fetch --tags Standard error: 错误&#xff1a;RPC 失败。curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8) 错误&#xff1a;预期仍然需要 2737 个字节的正文 fetch-pack: unexpec…

【React篇 】React项目中常用的工具库

我们可以从项目初始化、开发、构建、检查及发布的顺序总结react项目开发常用的工具库。 首先是初始化。 初始化工程项目一般用官方维护的 create-react-app&#xff0c;这个工具使用起来简单便捷&#xff0c;但 create-react-app 的配置隐藏比较深&#xff0c;修改配置时搭配…

设备在线监控系统软件

在数字化、智能化的浪潮中&#xff0c;物联网技术正以前所未有的速度改变着我们的工作和生活方式。作为物联网技术的核心组成部分&#xff0c;设备在线监控系统软件的重要性日益凸显。今天&#xff0c;我们就来详细探讨一下HiWoo Cloud平台如何助力企业实现设备的全面监控与管理…

纯血鸿蒙开发教程:如何实现运动饮食卡片效果

开发背景 人们对健康的要求越来越高&#xff0c;从单纯的健康饮食到健康运动&#xff0c;再到两者的结合。但是&#xff0c;饮食和运动之间的平衡一般人很难掌握&#xff0c;而我们这款 APP 将饮食、运动、以及自身身体状况&#xff08;如体脂、体重、内脂等&#xff09;有机结…

强烈安利10款手机App!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 1.听书神器——昊昊听书 昊昊听书app是一款专门为用户提供有声读物的应用程序。它不仅提供了各种类型的有声书籍&#xff0c;还有各种知名的电…

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库

Hugging Face系列2&#xff1a;详细剖析Hugging Face网站资源——实战六类开源库 前言本篇摘要2. Hugging Face开源库2.1 transformers2.1.1 简介2.1.2 实战1. 文本分类2. 图像识别3. 在Pytorch和TensorFlow中使用pipeline 2.2 diffusers2.2.1 简介2.2.2 实战1. 管线2. 模型和调…

使用OpenPCDet实现VoxelNext进行训练和测试:实现NuScence数据集的全局感知结果可视化

在自动驾驶和机器人技术日益蓬勃发展的今天&#xff0c;3D目标检测技术成为关键的一环&#xff0c;它赋予机器以理解和响应周围环境的能力。本文将深入探讨如何使用开源的OpenPCDet框架训练先进的VoxelNeX模型&#xff0c;并在nuScenes数据集上进行训练、测试&#xff0c;最后实…

MYSQL8.30版本 服务开不了问题

CMD→services.msc 启动MySQL80时突然发现了问题&#xff0c;服务无法启动了&#xff1a; 解决方案1&#xff1a; 解决方案&#xff1a; 1. 找到mysql的data文件夹&#xff0c;将data进行备份&#xff0c;一定要备份&#xff01; &#xff08;data文件夹路径可以在mysql安装…

PS的抠图算法原理剖析 1

以这个抠tree为例子 在PS里&#xff0c;操作过程是让你开启R G B三个通道 分别看一下 哪一个的对比最明显 上面的图片 树叶肯定B最少 天空B富裕&#xff0c;所以对比最明显的就用B通道 然后使用一些奇怪的函数&#xff0c;把texture.bbb这张图片变成黑白&#xff0c;纯黑纯白 那…

LINUX系统编程:核心转储

目录 核心转储 这两个有什么区别呢&#xff1f; 那为什么在我们使用Core终止进程时没看见core文件呢&#xff1f; 那为什么这么好用的功能是被关闭的呢&#xff1f; 如何开启核心转储 写个除零错误验证一下 使用Core文件 核心转储 在使用信号的时候&#xff0c;我们发现…

事务管理AOP

通过事务操作 删除部门的时候,同时删除员工,那么如果其中有异常,那么就进行事务回滚 使用注解Trance Transactional-propagation(传播行为)

多语言接入淘宝API抓取淘宝数据库数据获取详情页信息评论数据等,打造个性化营销策略

在数字化时代&#xff0c;个性化营销已成为品牌与消费者建立联系的关键。淘宝API作为强大的工具&#xff0c;能够帮助商家深入挖掘消费者需求&#xff0c;实现精准营销。本文将探讨如何通过淘宝API提升营销效果&#xff0c;增强用户体验。 消费者洞察&#xff1a; 淘宝API提供丰…

电商行业为什么要分析竞对品牌?从哪些维度开展竞对品牌分析?

在品牌林立的商业战场上&#xff0c;了解和分析竞争品牌成为了企业制定市场策略的重要一环。同行业的品牌间竞争尤为激烈&#xff0c;因为它们往往服务于同一类消费者&#xff0c;提供相似的产品和服务。为了在这场竞争中站稳脚跟&#xff0c;甚至脱颖而出&#xff0c;商家必须…

关于LPC1768在线升级的实现的注意事项

开发环境&#xff1a;Keil 5 uVision V5.38.0.0 1、使用IAP的方式&#xff08;应用程序在线编程&#xff09; 2、在Flash中构建用于升级的不同区域 &#xff08;1&#xff09;引导区 &#xff08;2&#xff09;APP区 &#xff08;3&#xff09;升级代码存放区域 注意&…

【嵌入式DIY实例】-OLED显示BME280传感器数据

OLED显示BME280传感器数据 文章目录 OLED显示BME280传感器数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 开发板(ESP12-E 模块)和 BME280 气压、温度和湿度传感器构建本地气象站。 NodeMCU 从 BME280 传感器读取温度、湿度和压力值,并将它们(分别以…

Stable Diffusion原理

核心 和diffusion相比&#xff0c;使用了latent&#xff08;隐式空间&#xff09;做diffusion&#xff0c;这样速度更快&#xff01;&#xff01;&#xff01; SD模型的主体结构如下图所示&#xff0c;主要包括三个模型&#xff1a; autoencoder&#xff1a;encoder将图像压…