当前位置: 首页 > news >正文

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

局部截取_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.zskr.cn/news/17932.html

相关文章:

  • 【题解】P12992 [GCJ 2022 #1C] Intranets
  • ysyx:pa3.1批处理系统
  • JAVA: Mybatis添加xml执行多行更新语句时报错
  • 065_尚硅谷_赋值运算符基本使用
  • 20232416 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • 1.1.1.1 金融市场的定义与功能
  • 每日反思
  • 1.1.1.2 直接融资vs间接融资的区别
  • 柳高国庆小小说创作比赛的构思和成文(未完成)
  • 被彼此笼罩 任歌声将我们缠绕 立下誓言后再自嘲 重复仲夏夜的舞蹈 吞下这毒药
  • 朝圣显像 不及那人将门扉轻轻叩响 欢迎来到我的城市 嗅玫瑰绽放
  • 分布式锁的 Java 实现与性能对比:从实战落地到选型指南(一) - 指南
  • 2025.10.9 月考游寄 - Amy
  • 七层协议
  • 10.9正式恢复
  • 2025.10.8 训练记录
  • 【触想智能】工业一体机在金融领域的应用优势和具体注意事项 - 指南
  • 【每日一面】盒子模型
  • ai 对话框一直往下滚可能要成为过云,当初只是为了快速现实ai的演示界面而己,是该走入正题 了
  • 脚手架安全巡检智能化!AI 让隐患识别更精准、整改更高效
  • 计划管理
  • 苍穹外卖第二天(Nginx如何配置、MD5加密)
  • 自动引入的element-plus覆盖tailwindcss样式冲突解决方法
  • Linux之周期性定时任务实践
  • 24 LCA模拟赛2T4 colorful 题解
  • 23 LCA模拟赛2T2 异或排列 题解
  • SQLAlchemy 库 - 实践
  • 国庆做题记录(基础算法)
  • 504 品酒大会!!!!!!
  • 【数据结构】可撤销并查集 - Slayer