首页 > 其他分享 >216.组合总和III 17.电话号码的字母组合

216.组合总和III 17.电话号码的字母组合

时间:2023-04-04 21:36:12浏览次数:27  
标签:216 digits return String 17 int list 字母组合 new


216.组合总和III

216.组合总和III 17.电话号码的字母组合_算法


回溯的常规思路做这道题:

class Solution {
    List<List<Integer>> list = new ArrayList<>();
    LinkedList<Integer> res = new LinkedList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
        f(k,n,1);
        return list;
        
    }
    void f(int k,int n,int startIndex){
        if(res.size() == k){
            if(n == 0) list.add(new ArrayList(res));
            return;
        }
        for(int i = startIndex;i <= 9 - (k - res.size()) + 1;i++){
            res.add(i);
           f(k,n - i,i + 1);
            res.removeLast();
        }
    }
}

216.组合总和III 17.电话号码的字母组合_算法_02

17.电话号码的字母组合

216.组合总和III 17.电话号码的字母组合_深度优先_03


216.组合总和III 17.电话号码的字母组合_i++_04

class Solution {
    List<String> list;
    public List<String> letterCombinations(String digits) {
        list = new ArrayList<>();
        if(digits == null || digits.length() == 0) return list;
        
        String[] s = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        dfs(digits,0,s);
        return list;
    }
    StringBuilder sb = new StringBuilder();
    void dfs(String digits,int idx,String[] s){
        if(idx == digits.length()){
            list.add(sb.toString());
            return;
        }
        //这行代码很关键,递归遍历字符串
        String str = s[digits.charAt(idx) - '0'];
        for(int i = 0;i < str.length();i++){
            sb.append(str.charAt(i));
            dfs(digits,idx + 1,s);
            sb.deleteCharAt(sb.length() - 1);
        }
        
    }
}

216.组合总和III 17.电话号码的字母组合_深度优先_05


标签:216,digits,return,String,17,int,list,字母组合,new
From: https://blog.51cto.com/u_15911055/6169670

相关文章

  • Codeforces Round 717 (Div. 2) B. AGAGA XOOORRR(位运算)
    https://codeforces.com/contest/1516/problem/B题目大意:给定长度为n的数组a,问我们能不能一直选择两个相邻的元素进行异或后,删除这两个值,把异或值留下来,最后剩下>=2个数字,它们都是相同的?可以做到输出YES,不能的话输出NO。input23022423110outputYESNO题......
  • MIT 6.172 lec1笔记
    为何要做性能工程性能是购买软件各种特性的货币:我们可以牺牲性能来换取下图中的属性2004年之后,多核处理器流行了起来。其中每个独立的处理器核都可以参与各种运算,但性能工程仍然复杂因为其涉及到多个方面。如何编写软件来最大化利用硬件,这是此系列课程将要解决的问题。程序优......
  • MIT 6.172 lec2笔记
    本节课介绍了优化的一些法则从以下四个方面介绍了优化法则Datastructures包装与编码包装的思想是把多个数据值存储在一个机器字中,而编码的思想是把数据值转换为需要更少比特表示的形式。例如日期字符串"September11,2018"可以转换为下图中的结构体,其中year为13位,month为......
  • Hot Start Up (easy version) CF1799
    你有两个CPU,n个程序(m个类型)要运行。在不同条件下程序运行的时间不同,但连续运行的时间满足小于等于在不连续状态下运行的时间。  #include<iostream>#include<cstring>#include<queue>usingnamespacestd;constintN=5002;#defineintlonglong#definei......
  • 51nod 1799 二分答案
    1799二分答案基准时间限制:1秒空间限制:131072KB分值:40难度:4级算法题收藏关注lyk最近在研究二分答案类的问题。对于一个有n个互不相同的数且从小到大的正整数数列a(其中最大值不超过n),若要找一个在a中出现过的数字m,一个正确的二分程序是这样子的:l=1;r=n;mid=(l+r)/......
  • 代码随想录Day20-Leetcode654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验
    654.最大二叉树题目链接:https://leetcode.cn/problems/maximum-binary-tree/基本的模拟思路很快/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*this.val=(val===undefined?0:val)*this.left=(left===undefined......
  • chap17使用API
    使用webAPIimportrequestsurl='https://api.github.com/search/repositories?q=language:python&sort=stars'headers={'Accept':'application/vnd.github.v3+json'}r=requests.get(url,headers=headers)print(f'Statuscod......
  • 信息系统项目管理师第四版知识摘编:第17章 项目干系人管理​
    第17章项目干系人管理项目干系人管理包括识别能够影响项目或会受项目影响的人员、团体或组织,分析干系人对项目的期望和影响,制定管理策略有效调动干系人参与项目决策和执行。17.1管理基础17.1.1管理的重要性每个项目都有干系人,他们会受到项目积极或消极的影响,或者能对项目施加积极......
  • 【NOI OpenJudge1789】算24(搜索)
    problem给定4个数,加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。问是否存在一种方式使得得到的表达式的结果等于24。solution正常的中缀表达式枚举和计算难度都约等于0,麻烦的是括号的枚举和处理。这里只要求满足的结果,所以换一种方式拿掉括号——打乱顺序即可(括号的用......
  • 17搜索二分题目目录
    ProblemA:Canyousolvethisequation?(HDU2199)  点击这里ProblemB:Strangefuction(HDU2899) 点击这里ProblemC:Pie(HDU1969)  点击这里ProblemD:Toxophily(HDU2298)(三分加二分)  点击这里ProblemE:Turnthecorner(HDU2438) 点击这里ProblemF:LineBelt(HDU3400)(三......