Day25——组合总和III、电话号码的字母组合

简介: Day25——组合总和III、电话号码的字母组合

前言


平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花。幸福不是靠别人来布施,而是要自己去赢取。生命的意义在不断挑战自己,战胜自己!

一、组合总和III


力扣

class Solution {
public:
    vector<vector<int>> ans;     //储存结果
    vector<int> path;            //单个路径结果
    long long sum=0;
    void backtracking(int k,int n,int startindex)
    {
        if(path.size()==k)            //等于k的时候(k个数的集合),就开始返回了
        {
            if(sum==n)                //符合要求就收集,不然直接返回
            {
                ans.push_back(path);
            }
            return;
        }
        for(int i=startindex;i<=9;i++)        //注意因为只能选1-9九个数字
        {
            path.push_back(i);                //插入
            sum=sum+i;
            backtracking(k,n,i+1);
            path.pop_back();            //回溯
            sum=sum-i;
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        backtracking(k,n,1);
        return ans;
    }
};

二、电话号码的字母组合


力扣

class Solution {
public:
    const string phonemap[10]={ "", // 0
    "", // 1
    "abc", // 2
    "def", // 3
    "ghi", // 4
    "jkl", // 5
    "mno", // 6
    "pqrs", // 7
    "tuv", // 8
    "wxyz", // 9
    };
    vector<string>ans;                        //收集答案
    string path;                                //收集字符
    void backtacking(string digits,int index)
    {
        if(digits.size()==index)       //index是储存按下数字数组的下标
        {
            ans.push_back(path);
            return;
        }
        int j=digits[index]-'0';            //转换成整型数字
        string lettermap=phonemap[j];        //找到按键数字所代表的字符串
        for(int i=0;i<lettermap.size();i++)        //遍历
        {
            path.push_back(lettermap[i]);
            backtacking(digits,index+1);
            path.pop_back();                //回溯
        }
    }
    vector<string> letterCombinations(string digits) {
        if(digits.size()==0)
        {
            return ans;
        }
        backtacking(digits,0);
        return ans;
    }
};

总结


跟上进度了,什么都可以变成树。

相关文章
|
6天前
leetcode-1220:统计元音字母序列的数目
leetcode-1220:统计元音字母序列的数目
32 0
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
7月前
|
算法
代码随想录Day21 回溯 LeetCodeT216 组合总和III LeetCode T17电话号码的字母总和
代码随想录Day21 回溯 LeetCodeT216 组合总和III LeetCode T17电话号码的字母总和
32 0
|
8月前
|
JavaScript 前端开发
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
|
9月前
|
机器学习/深度学习 存储 算法
算法训练Day25|216.组合总和III● 17.电话号码的字母组合
算法训练Day25|216.组合总和III● 17.电话号码的字母组合
LeetCode-1220 统计元音字母序列的数目
LeetCode-1220 统计元音字母序列的数目
|
10月前
|
算法
|
11月前
|
存储 算法 Java
代码随想录训练营day25| 216.组合总和III 17.电话号码的字母组合
代码随想录训练营day25| 216.组合总和III 17.电话号码的字母组合
用户输入学号,如果是以aabcddef开头,并且后边是4位数字,前两位大于06小于等于当前年份。判断用户输入是否合法
用户输入学号,如果是以aabcddef开头,并且后边是4位数字,前两位大于06小于等于当前年份。判断用户输入是否合法
85 0
|
Java 测试技术
Java数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3
Java数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3
162 0
Java数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3