首页 > 其他分享 >(25/60)组合总和Ⅲ、电话号码的字母组合

(25/60)组合总和Ⅲ、电话号码的字母组合

时间:2024-02-23 22:13:03浏览次数:27  
标签:digits 25 数字 index int 复杂度 60 字母组合 path

组合总和Ⅲ

leetcode:216. 组合总和 III

回溯法

思路

组合的基础上,在找组合的过程中,把和为N的记录下来。

复杂度分析

时间复杂度:O(C(K,9))。

空间复杂度:空间复杂度主要来自递归调用时维护的栈空间和存储结果的二维数组,分别为O(k) 和O(C(K,9)*K)。

注意点

代码实现

class Solution {
public:
    // 找全部组合的过程中,把和为n的记录下来
    vector<int> path;
    vector<vector<int>> result;
    void backtracking(int k,int n,int begin){
        // 终止条件,组合有k个数
        if(path.size() == k){
            int sum = 0;
            for(int i : path) sum += i;
            if(sum == n) result.push_back(path);
            return;
        }

        for(int i = begin;i <= 9 - (k - path.size()) + 1;i++){
            path.push_back(i);
            backtracking(k,n,i + 1);
            path.pop_back();
        }    
    }

    vector<vector<int>> combinationSum3(int k, int n) {
        backtracking(k,n,1);
        return result;
    }
};

电话号码的字母组合

leetcode:17. 电话号码的字母组合

回溯法

思路

首先建立数字对应的映射数组。

  1. 传入digits数字字符串、index表示当前处理数字字符串的位置、path表示数字映射的结果。
  2. 终止条件:首先,若digits为空,直接返回;处理完(index>=digits的大小)digits里的数字后,把path存入结果数组,返回。
  3. 递归体:
    1. 首先通过index从digits字符串中获取当前处理的数字。
    2. 对数字映射的字符集进行遍历,递归。

复杂度分析

时间复杂度:O(3^m * 4^n),其中 m 是对应四个字母的数字个数,n 是对应三个字母的数字个数。

空间复杂度:O(3^m * 4^n)。

注意点

  1. string数字转化为int数字,减去'0'。

代码实现

class Solution {
public:
    // 还是组合问题
    vector<string> result;
    string letterMap[10] = {
        "",
        "",
        "abc",
        "def",
        "ghi",
        "jkl",
        "mno",
        "pqrs",
        "tuv",
        "wxyz"
    };

    void backtracking(string digits,int index,string path){
        if(digits.size() == 0) return;
        if(index >= digits.size()){	// 终止条件:当前处理的index>=size,已经处理完元素了
            result.push_back(path);
            return;
        }
        int number = digits[index] - '0'; // 获取当前处理的数字
        for(int i = 0;i < letterMap[number].size();i++){	// 对数字映射的字符遍历
            backtracking(digits,index + 1,path + letterMap[number][i]);
        }
    }

    vector<string> letterCombinations(string digits) {
        backtracking(digits,0,"");
        return result;
    }
};

标签:digits,25,数字,index,int,复杂度,60,字母组合,path
From: https://www.cnblogs.com/tazdingo/p/18030453

相关文章

  • 60V/40V输入LDO,80V耐压王者:PW8600系列,小巧封装,高效稳定
    描述:PW8600系列是一款专为高电压、低功耗应用设计的线性稳压器。其卓越的性能和广泛的应用范围,使其在电力敏感型应用中表现出色。无论是为电池供电设备提供稳定的电源,还是在烟雾探测器和传感器中保障精准测量,PW8600系列都能展现出其独特的优势。特点详解:1.宽广的输入电......
  • iPaaS生成数据库接口只要60秒?
    “iPaaS生成数据库接口只要60秒?”关于“iPaaS生成数据库接口只要60秒?”的说法,这实际上反映了iPaaS解决方案的一个重要优势:高效率。确实,借助iPaaS平台的现成集成工具和模板,用户可以迅速创建连接到特定数据库的接口。低代码开发平台提供了一个简化的、图形化的编程环境,允许开发者......
  • 软件无线电处理平台设计方案:330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口
    一、板卡概述   本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXIE标准协议,其中XJ3标准高速差分接口,支持PCIeX 2。软件具有windows,Linux驱动。 二、功能和技术指标......
  • P4606 [SDOI2018]战略游戏
    P4606[SDOI2018]战略游戏一个感觉比较新颖的题目,搞了一周题目大意:给定一个图,q组询问,每组给定k个点,求图上有几个点,删去后能使这k个点不连通题解:首先考虑删掉的点一定为割点,然后本题极像虚树,就可以考虑建圆方树然后,圆方树上的圆点,在两点路径上的,即为所求于是乎把k个点拎出来......
  • 代码随想录算法训练营第二十五天| 216.组合总和III 17.电话号码的字母组合
    组合总和III题目链接:216.组合总和III-力扣(LeetCode)思路:仿照昨天的递归模板写的,同样是for循环横向遍历,递归纵向遍历。注意当k>n时要直接跳出,否则会判断栈溢出。额外发现一个问题就是在累加sum时,用for(autoi:path)sum+=path[i];会出现奇怪数字,原因是auto遍历用法错误,正确写......
  • 安装Windows Server 2025 搭建云桌面平台
    介绍WindowsServer2025为Hyper-V带来了多项增强功能和新的存储特性,主要用于优化虚拟机的运行体验。这些新特性涵盖GPU虚拟化、新的ReFS去重功能,以及在非AD域的集群上进行虚拟机实时迁移。云桌面方案的用户最关心的GPU-P的技术也将在WindowsServer2025中正式推出。......
  • 自己开发的C#软件被360误认为木马,如何避免
    如果自己开发的C#软件被360安全软件误认为是木马,这通常是由于以下几个原因:行为检测:360安全软件可能检测到了你的软件具有某些与恶意软件相似的行为,如修改注册表、访问敏感文件或执行可疑的网络操作。特征码匹配:你的软件可能包含与已知恶意软件相似的代码片段或字符串,这些被......
  • [ABC259Ex] Yet Another Path Counting 题解
    Description有\(N\)行\(N\)列的网格图,只能向下或向右走,合法路径的开端和结尾的格子上数字一样找到合法路径条数,对\(998244353\)取模\(1\leqN\leq400,1\leqa_{i,j}\leqN^2\)。Solution有一个\(O(n^4)\)的做法是每次枚举起点和终点然后用组合数计算答案,但是由于同......
  • 代码随想录算法训练营第二十五天 | 17.电话号码的字母组合 , 216.组合总和III
    216.组合总和III 已解答中等 相关标签相关企业 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回......
  • 软件无线电处理平台设计方案:330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口
    一、板卡概述     本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXIE标准协议,其中XJ3标准高速差分接口,支持PCIeX 2。软件具有windows,Linux驱动。二、功能和技术......