日志|电话号码的字母组合|子集|回溯

news/2025/10/9 23:50:17/文章来源:https://www.cnblogs.com/zhongeee/p/19132160

局部截取_20251009_214710

解题思路:

回溯三问:

1.当前操作?枚举数组path[i]要填入的字母
2.子问题?构造字符串>= i 的部分
3.下一个子问题?构造>= i+1 的部分

对于本题

1.当前操作:枚举放入path当前i的字母 例如第2个数字对应的a b c
2.子问题:下一位置要放的字母的枚举 例如第3个数字对应的 d e f
3.下一个子问题:下一位置的下一位置的要放的字母的枚举

总结

例如输入[23]
先dfs(0),
本层 a 有 dfs(1),本层层有def,d有dfs(2)e有dfs(2)f有dfs(2)。又回到最上层dfs(0)
本层 b 有 dfs(1),本层层有def,d有dfs(2)e有dfs(2)f有dfs(2)。又回到最上层dfs(0)
本层 c 有 dfs(1),本层层有def,d有dfs(2)e有dfs(2)f有dfs(2)。又回到最上层dfs(0)
结束返回ans

点击查看代码
class Solution {private static final String[] MAPPING = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};public List<String> letterCombinations(String digits) {int n = digits.length();if (n == 0) {return List.of();}List<String> ans = new ArrayList<>();char[] path = new char[n];dfs(0, ans, path, digits.toCharArray());return ans;}private void dfs(int i, List<String> ans, char[] path, char[] digits) {if (i == digits.length) {ans.add(new String(path));return;}String letters = MAPPING[digits[i] - '0'];for (char c : letters.toCharArray()) {path[i] = c;dfs(i + 1, ans, path, digits);}}}

局部截取_20251009_230833

点击查看代码
class Solution {public List<List<Integer>> subsets(int[] nums) {List<List<Integer>> ans = new ArrayList<>();List<Integer> path =  ArrayList<>();dfs(0, nums, path, ans);return ans;}private void dfs(int i, int[] nums, List<Integer> path, List<List<Integer>> ans) {ans.add(new ArrayList<>(path)); // 复制 pathfor (int j = i; j < nums.length; j++) { // 枚举选择的数字path.add(nums[j]);dfs(j + 1, nums, path, ans);path.removeLast(); // path.remove(path.size() - 1);}}
}        

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

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

相关文章

Rust 的验证码图像识别系统设计与实现

一、研究背景 验证码(CAPTCHA)是互联网安全中最常见的防护手段之一,用于区分人类用户与自动化程序。 近年来,随着OCR(Optical Character Recognition,光学字符识别)与机器学习的发展,验证码识别已成为人工智能…

Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库) - a

Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库) 目录Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库)0.学习目…

ROIR 2023

ROIR 2023 评分 \(\in[0,10]\)。 https://www.luogu.com.cn/problem/list?type=luogu&page=1&tag=479|60&orderBy=pid&order=asc 矩形分割 (Day 1) \(3\)。 根据题意列出二元二次方程,用 \(k\) 换元…

【题解】P12992 [GCJ 2022 #1C] Intranets

以此纪念我洛谷 AC 的第 \(999\) 个题。 \(2025.10.09\) 题意: 天网是一张无向图 \(G\) ,包含 \(n\) 个点。一开始,天网上没有任何边。你以等概率随机顺序依次对所有的点对尝试加边。 每次尝试加边 \((u,v)\) 的时候…

ysyx:pa3.1批处理系统

ysyx:pa3.1批处理系统批处理系统 为了让管理员事先准备好一组程序, 让计算机执行完一个程序之后, 就自动执行下一个程序,提出了批处理系统的思想。处理系统的关键, 就是要有一个后台程序, 当一个前台程序执行结束的时…

基于 C 语言的验证码图像识别系统实现

一、项目背景 验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种常见的安全验证手段,用于防止机器自动提交表单、恶意注册等操作。随着计算机视觉与OCR(光学字…

C++篇:003

C++篇:003$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");C++篇:003.STL 一、STL概述 从根本上说,STL是一些“容器”的集合,也是算法和其他一些组件的集…

C 语言的验证码图像识别系统实现

一、项目背景 验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种常见的安全验证手段,用于防止机器自动提交表单、恶意注册等操作。随着计算机视觉与OCR(光学字…

oppoR9m刷Linux系统: 引导知识

前言全局说明注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照片、聊…

JAVA: Mybatis添加xml执行多行更新语句时报错

JAVA: Mybatis添加xml执行多行更新语句时报错tableMapper.xml<update id="updateTables" parameterType="Table"><foreach collection="tableList" item="item" sep…

安装Docker(CentOS安装Docker,CentOS7安装DockerCompose,Docker镜像仓库) - a

0.安装Docker 目录0.安装Docker1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker1.4.配置镜像加速2.CentOS7安装DockerCompose2.1.下载2.2.修改文件权限2.3.Base自动补全命令:3.Docker镜像仓库3.1.简…

所有文档每页的第一行居中对齐

Sub 所有文档每页的第一行居中对齐()文件夹路径 = "C:\Users\你的用户名\Desktop\批量办公项目库\物业\第二次\300元含以下的住户\" 获取文件夹中第一个Word文档文件名 = Dir(文件夹路径 & "*.doc*…

065_尚硅谷_赋值运算符基本使用

065_尚硅谷_赋值运算符基本使用1.赋值运算符介绍和分类2.两个变量值互换方法1:定义一个临时变量,方法2:复合赋值的操作 3.赋值运算符的特点

上代码演示下Profile-Guided Optimization (PGO)

Shell脚本名叫step#!/bin/bashif [[ $# -ne 1 ]]; then exit; firun() { C="g++ $1 main.cpp"; echo $C; $C; a.out; }case $1 in 0) run ;; 1) run -fprofile-generate=. ;; 2) run -fprofile-use=. ;; # …

一个有趣的网站,可以给自己生成一个奖牌:aitokenawards.com

一个有趣的网站,可以给自己生成一个奖牌:aitokenawards.com 一个有趣的网站,可以给自己生成一个奖牌:AI Token Awards JSON Formatter - AI Token Awards

109

栈的特性(后进先出) 顺序栈 增删改的时间复杂度为O(1) top指针与base指针,top与base指针指向0和-1的时候关于top指针指向的顶端位置不同 先压后加,先减后弹

20232416 2025-2026-1《网络与系统攻防技术》实验一实验报告

一、实验目标及内容实验内容:手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。注入一个自己制作的shellcode并运行…

day008

今日完成:html标签页的排列 明日完成:html 遇到问题:无

lzr 的区间(interval)

题目大意 题目传送门 给定一个序列 \(a\),问有多少个区间的异或和的二进制表示下一的个数为奇数。 思路 定义 \(f(l, r)\) 为区间 \([l, r]\) 之间的异或和,\(g(a)\) 表示 \(a\) 在二进制表示下 \(1\) 的个数。 因为…

IRB-120机械臂socket通信接受上位机指令运行程序段

IRB-120机械臂使用socket通信接受上位机指令程序段 功能:可接受坐标系坐标和单轴坐标,可实现相对运动或绝对运动 可与上位机握手避免连接错误 可向上位机发送当前位置(坐标系、单轴) MODULE Module1CONST robtarge…