代码随想录刷题训练营day25:LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合

代码随想录刷题训练营day25:LeetCode(40)组合总和 II、LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合

LeetCode(40)组合总和 II
题目
在这里插入图片描述

代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;class Solution {public List<List<Integer>> result=new ArrayList<>();public List<Integer> path=new ArrayList<>();public List<List<Integer>> combinationSum2(int[] candidates, int target) {//题目含义:每个元素仅使用一次,并完成去重,产生重复的结果,进行去除//1,数组排序Arrays.sort(candidates);//2、创建状态数组,用于区别树枝重复和树层重复,树枝重复是可取的,树层重复是不可取的int[] used=new int[candidates.length];//3、调用递归函数----获取结果int startIndex=0;int sum=0;backtracking(candidates,used,target,startIndex,sum);return result;}//回溯函数public void backtracking(int[] candidates,int[] used,int target,int startIndex,int sum){if(sum>=target){if(sum==target){List<Integer> tempPath=Arrays.asList(new Integer[path.size()]);Collections.copy(tempPath, path);result.add(tempPath);}return;//退回去}for(int i=startIndex;i<candidates.length;i++){//去重的关键操作if(i>0&&candidates[i]==candidates[i-1]&&used[i-1]==0){//树枝上可以重复,树层上不可以重复-----定义一个状态变量continue;//当前回合循环不用}path.add(candidates[i]);sum=sum+candidates[i];used[i]=1;backtracking(candidates, used, target, i+1, sum);path.remove(path.size()-1);sum=sum-candidates[i];used[i]=0;//回溯,弹出来}}
}

LeetCode(216)组合总和III
题目
在这里插入图片描述

代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;class Solution {public List<Integer> path=new ArrayList<>();//存储路径public List<List<Integer>> result=new ArrayList<>();//存放结果public List<List<Integer>> combinationSum3(int k, int n) {int startIndex=1;//调用递归函数backtracking(k,n,startIndex);return result;}//设计递归函数public void backtracking(int k,int n,int startIndex){//终止条件if(path.size()==k){int sum = path.stream().reduce(Integer::sum).orElse(0);//求和数据流if(sum==n){List<Integer> pathDate=Arrays.asList(new Integer[path.size()]);Collections.copy(pathDate, path);result.add(pathDate);return;}}//进入单次递归循环for(int i=startIndex;i<=9;i++){path.add(i);backtracking(k, n, i+1);path.remove(path.size()-1);//回溯}}
}

LeetCode(17)电话号码的字母组合
题目
在这里插入图片描述

代码

import java.util.ArrayList;
import java.util.List;class Solution {public List<String> result=new ArrayList<>();//定义一个存放路径的数组----该数组可以进行操作public StringBuffer path=new StringBuffer();//存储整个数据的数组String[] date={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};public List<String> letterCombinations(String digits) {int pathlenght=digits.length();if(pathlenght==0){return result;//此时直接为空,不需要进行递归}int index=0;//调用回溯函数----得到返回值backtracking(digits,index);//是只到第几个数组;return result;}public void backtracking(String digits,int index){//判断终止条件if(path.length()==digits.length()){String pathdate=path.toString();result.add(pathdate);return;}//进入单层递归循环char c=digits.charAt(index);//转charint i=c-'0';//转intString dateString=date[i];for (int j = 0; j < dateString.length(); j++) {//执行结束也是一次循环结束String pathtemp=String.valueOf(dateString.charAt(j));path.append(pathtemp);//递归backtracking(digits, index+1);//回溯path.deleteCharAt(path.length()-1);    }}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿牛客网项目---用户注册登录功能的实现

从今天开始我们来写一个新项目&#xff0c;这个项目是一个完整的校园论坛的项目。主要功能模块&#xff1a;用户登录注册&#xff0c;帖子发布和热帖排行&#xff0c;点赞关注&#xff0c;发送私信&#xff0c;消息通知&#xff0c;社区搜索等。这篇文章我们先试着写一下用户的…

Unity(第十四部)光照

原始的有默认灯光、除了默认的你还可以创建 1、定向光源&#xff08;类似太阳、从无限远的地方射向地面的光&#xff0c;光源位置并不影响照射角度等&#xff0c;不同方向的旋转影响角度和明亮&#xff09; 1. 颜色&#xff1a;调整光的颜色2. 模式&#xff1a;混合是实时加烘…

kafka三节点集群平滑升级过程指导

一、前言 Apache Kafka作为常用的开源分布式流媒体平台&#xff0c;可以实时发布、订阅、存储和处理数据流,多用于作为消息队列获取实时数据&#xff0c;构建对数据流的变化进行实时反应的应用程序&#xff0c;已被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型…

实战Kafka的部署

目录 一、环境准备 二、安装配置jdk8 &#xff08;1&#xff09;Kafka、Zookeeper&#xff08;简称&#xff1a;ZK&#xff09;运行依赖jdk8 三、安装配置ZK &#xff08;1&#xff09;安装 &#xff08;2&#xff09;配置 四、配置Kafka &#xff08;1&#xff09;配置…

网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」&#xff1a;此文章已录入专栏《计算机网络零基础快速入门》 DHCP协议 一、简介二、分配方式1&#xff09;自动分配2&#xff0…

AI时代的产品文案秘籍:如何用AI提升效率

人工智能写作工具&#xff1a;解放双手&#xff0c;创作不停歇 在当前人工智能技术飞速发展的背景下&#xff0c;越来越多的个体已经开始利用这一AI写作工具&#xff0c;以显著提高自己的工作效率。这不仅标志着人工智能服务于人类的宏伟时代的到来&#xff0c;更是人人可用的创…

【深度优先搜索】【图论】【推荐】332. 重新安排行程

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 深度优先搜索 图论 LeetCode332. 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&a…

MySQL进阶:大厂高频面试——各类SQL语句性能调优经验

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;强推&#xff0c;冲大厂必精通&#xff01;MySQL索引底层&#xff08;BTree&#xff09;、性能分析、使用…

云时代【3】—— 容器技术发展史

云时代【3】—— 容器技术发展史 一、容器技术发展史&#xff08;一&#xff09;OCI 规范 与 RunC&#xff08;二&#xff09;CRI 与 Container Runtime1. CRI 标准2. Container Runtime&#xff08;1&#xff09;为什么需要 Container Runtime&#xff08;2&#xff09;什么是…

价格腰斩:腾讯云服务器优惠价格表,不看后悔!

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

springboot+vue实现Minio文件存储

安装minio 首先点击进入MINIO官网&#xff0c;进行一个minio服务器的下载 下载好了之后在本地磁盘找一个文件夹&#xff0c;把下载的exe放入文件夹&#xff0c;再新建一个文件夹准备存放数据和文件 在当前目录cmd进入控制台&#xff0c;输入代码 minio.exe server data成功后…

2-溴叠氮,1-azido-2-bromoethane,可以与醇或酚反应生成相应的叠氮化物

2-溴叠氮&#xff0c;1-azido-2-bromoethane&#xff0c;1-Azido-2-bromo&#xff0c;可以与醇或酚反应生成相应的叠氮化物 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;2-溴叠氮&#xff0c;1-azido-2-bromoethane&#xff0c;1-Azido-2-bromo&#xff0c;1 Az…