【回溯算法part02】| 216.组合总和III、17.电话号码的字母组合

news2024/11/25 20:14:53

目录

🎈LeetCode216.组合总和||| 

✨剪枝优化 

🎈LeetCode17.电话号码的字母组合 


🎈LeetCode216.组合总和||| 

链接:216.组合总和|||

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

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

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

 

List<List<Integer>> result;
    List<Integer> path;
    int sum=0;
    public List<List<Integer>> combinationSum3(int k, int n) {
        result=new ArrayList<>();
        path=new ArrayList<>();
        backtracking(k,n,1);
        return result;
    }
    public void backtracking(int k,int n,int startIndex){
        if(path.size()==k){
            if(sum==n){
                result.add(new ArrayList<>(path));

            }
            return;
        }
        for(int i=startIndex;i<=path.size()-k+10;i++){
            path.add(i);
            sum+=i;
            backtracking(k,n,i+1);
            sum-=i;
            path.remove(path.size()-1);
        }
    }

✨剪枝优化 

List<List<Integer>> result;
    List<Integer> path;
    int sum=0;
    public List<List<Integer>> combinationSum3(int k, int n) {
        result=new ArrayList<>();
        path=new ArrayList<>();
        backtracking(k,n,1);
        return result;
    }
    public void backtracking(int k,int n,int startIndex){
        if(path.size()==k){
            if(sum==n){
                result.add(new ArrayList<>(path));

            }
            return;
        }
        for(int i=startIndex;i<=path.size()-k+10;i++){   //剪枝
            path.add(i);
            sum+=i;
            if(sum>n){             //剪枝
                sum-=i;
                path.remove(path.size()-1);
                return;
            }
            backtracking(k,n,i+1);
            sum-=i;
            path.remove(path.size()-1);
        }
    }

🎈LeetCode17.电话号码的字母组合 

链接:17.电话号码的字母组合

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

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

  

String[] letter={" "," ","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    List<String> result;
    StringBuilder str=new StringBuilder();
    public List<String> letterCombinations(String digits) {
        result=new ArrayList<>();
        if(digits.length()==0){
            return result;
        }
        backtracking(digits,0);
        return result;
    }
    public void backtracking(String digits,int index){
        if(index==digits.length()){
            result.add(str.toString());
            return;
        }
        int digit=digits.charAt(index)-'0';
        String let=letter[digit];
        for(int i=0;i<let.length();i++){
            str.append(let.charAt(i));
            backtracking(digits,index+1);
            str.deleteCharAt(str.length() - 1);
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SONY索尼MP4视频变RSV文件修复方法

索尼MP4变RSV的原因分析 索尼新型号相机或者摄像机&#xff0c;如SONY A7S3&#xff0c;A7M4&#xff0c;FX3, FX6, FX9等&#xff0c;如果录像过程中有发生如下异常情况&#xff0c;如断电&#xff0c;死机&#xff0c;电量不足&#xff0c;机器摔倒&#xff0c;非常规操作&a…

confluence_table数据爬取

需求场景&#xff1a; 获取指定confluence文档中的表格数据&#xff0c;同时将页面中的附件下载在指定的文件夹中。 实现步骤&#xff1a; 开启confluence的远程api端口 选择使用的接口。 可以参考 官方接口文档 。 当前示例用到的接口为&#xff1a; Get content /rest/a…

现在开始学linux驱动内核好吗?

一开始是觉得&#xff0c;内核诶&#xff0c;高大上。然后看了几个月驱动后&#xff0c;是认认真真的钻了几个月源码&#xff0c;写了很多学习笔记的那种。 先说好处吧&#xff0c;对基础能力的提升很明显。比如内核数据结构&#xff0c;指针&#xff0c;以及如何用c需要去完成…

Windows系统上安装Node.js图文步骤流程

Windows系统上安装Node.js图文步骤流程&#xff0c;本文以安装Node.js v4.4.3 LTS(长期支持版本)版本为例&#xff1a; 目录 Node.js下载 Windows 上安装 Node.js 1、Windows 安装包(.msi) 2、Windows 二进制文件 (.exe)安装 版本测试 Node.js下载 Node.js 安装包及源码…

Linux扩容和删除运行内存(swapfile 交换文件)

1 新增swapfile 交换文件 Linux中Swap&#xff08;即&#xff1a;交换分区&#xff09;&#xff0c;类似于Windows的虚拟内存&#xff0c;就是当内存不足的时候&#xff0c;把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统&#xf…

Cyclo(L-Pro-L-Trp-),38136-70-8,L型氨基酸环二肽,及其参数说明

&#xff08;文章资料汇总来源于&#xff1a;陕西新研博美生物科技有限公司小编MISSwu&#xff09; 为大家介绍&#xff08;CAS&#xff1a;38136-70-8&#xff09;,试剂仅用于科学研究&#xff0c;不可用于人类&#xff0c;非药用&#xff0c;非食用。 分子式&#xff1a;C16…

vscode的代码工作区实现机制

工作区是编辑器的重要部分&#xff0c;它承载着编辑器和本地文件的连接&#xff0c;对文件增、删、改、查。下面我会介绍vscode工作区的创建。同样我们知道vscode软件打开的时候没有默认工作区&#xff0c;这里我对它进行了改造&#xff0c;软件启动时指向默认工作区。 工作区目…

使用PLSQL导入excel数据

1、写查询语句&#xff0c;查询需要修改的表&#xff0c;并在语句后加for update。 select * from bn_inf_apply for update 2、打开excel&#xff0c;整理需要导入的数据&#xff0c;需要注意两点&#xff1a; 1、将标题行删除。 2、在首列左侧增加一个空白行 3、 选中exce…

React02-JSX 语法

一、React 基础知识 1. React.createElement React.createElement 是 jsx 语法的编译结果&#xff0c;这个函数用来创建一个 React 元素&#xff0c;它的返回值是一个 Virtual DOM&#xff08;虚拟DOM&#xff09;。 React.createElement(type, props, ...children) 第一个…

数据库之MySQL仓库安装

目录 数据库之MySQL仓库安装 在官方文档获得安装地址 点击链接进入后&#xff0c;选择 MySQL Yum Repository 进入网页后&#xff0c;选择自己Linux所对应的版本&#xff08;我的是Linux8&#xff09; 选择No thanks&#xff0c;juststart my download 选择复制链接地址 …

12.1 计算机硬件基础

目录 底层课程导学 课程回顾 1.编程基础 2.应用开发&#xff08;使用操作系统提供的函数开发应用程序&#xff09; 3.底层开发&#xff08;开发操作系统本身&#xff0c;向下管理硬件、向上提供接口&#xff08;API&#xff09;&#xff09; 嵌入式系统分层 应用开发 底…

PLC技能引领自动化控制系统的设计与开发

学习了PLC后&#xff0c;您可以从事各种与自动化控制系统相关的工作。以下是一些可能的职业方向&#xff1a; 自动化工程师&#xff1a;作为自动化工程师&#xff0c;您将负责设计、开发和维护自动化控制系统&#xff0c;其中包括PLC编程、传感器和执行器的集成以及系统调试和…

CAD怎么转JPG图片?三种方法教你快速转换

CAD文件只能在安装了CAD软件的电脑上打开&#xff0c;而JPG图片可以在几乎所有设备上打开&#xff0c;包括电脑、手机和平板电脑等&#xff0c;这样可以更方便地分享和传递设计文件。无需考虑对方是否有安装CAD软件。那么我们怎么把CAD文件转换成JPG图片呢&#xff1f;教大家三…

管理类联考——英语——趣味篇——不择手段——c开头单词

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

CMIS_GOV_STD

自然资源“一张图”综合管理系统【标准版】

shell脚本-cp命令复制目录报错cp: omitting directory

cp 复制目录报错&#xff0c;如下&#xff1a; 【报错原因】&#xff1a; cp命令默认是不能复制目录的&#xff0c;需要加参数 【解决办法】&#xff1a; 使用cp -r命令进行复制&#xff0c;递归处理&#xff0c;将指定目录下的所有文件与子目录一并处理。 【拓展】cp语法 cp…

数据标注:数字病理学中的人工智能

在数字病理学中&#xff0c;组织样本的显微图像被传输到计算机&#xff0c;并使用先进的图像处理技术和计算机视觉对其进行分析。 医学图像和诊断的数字化为病理学中的人工智能开辟了途径。病理学家可以使用机器学习模型来进行增强分析并提高结果准确性。此外&#xff0c;病理学…

socat: 网络链接和一些简易的RPC

除了这些功能之外&#xff0c;端口转发&#xff0c;也是相当的方便实用, 小型产品的RPC 都可以通过&#xff0c;指定程序去执行

华为OD机试真题B卷 Python 实现【整理扑克牌】,附详细解题思路

目录 一、题目描述步骤1步骤2步骤3 二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 给定一组数字&#xff0c;表示扑克牌的牌面数字&#xff0c;忽略扑克牌的花色&#xff0c;请按如下规则对这一组扑克牌进行整理&am…

使用kubeshpere创建k8s容器日志系统grafana-loki

k8s日志聚合平台grafana-loki&#xff0c;可以统一查看所有容器的日志运行。 效果&#xff1a; 使用kubeshpere创建loki应用十分的方便&#xff0c;减少了很多操作&#xff0c;易用的同时也实用&#xff0c;k8s不再是精通人员才能使用的编排系统。 1、在企业空间中&#xff0…