ECNU刷题总结题目集

ECNU总结题目集(2023/8/29)

题目描述

17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"

输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""

输出:[]

示例 3:

输入:digits = "2"

输出:["a","b","c"]

提示:

0 <= digits.length <= 4

digits[i] 是范围 ['2', '9'] 的一个数字。

题解

cpp 复制代码
class Solution {
public:
    string s[8] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; 
    vector<string> ans;

    void dfs(int now, int len, string nowS, string digits)
    {
        if(now == len)
        {
            ans.push_back(nowS);
            return ;
        }
        string digit = s[digits[now] - '2'];
        for (char c : digit)
            dfs(now + 1, len, nowS + c, digits);
    }

    vector<string> letterCombinations(string digits) {
        int len = digits.size();
        if(len)
            dfs(0, len, "", digits);
        return ans;
        
    }
};

题目描述

46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例 1:

输入:nums = [1,2,3]

输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:

输入:nums = [0,1]

输出:[[0,1],[1,0]]

示例 3:

输入:nums = [1]

输出:[[1]]

提示:

1 <= nums.length <= 6

-10 <= nums[i] <= 10

nums 中的所有整数 互不相同

题解

cpp 复制代码
class Solution {
public:
    vector<vector<int>> ans;
    vector<int> vis, nowV;
    void dfs(int now, int len, vector<int>& nums)
    {
        if(now == len)
        {
            ans.push_back(nowV);
            return ;
        }
        for (int i = 0; i < len; i++)
            if(!vis[i])
            {
                vis[i] = 1;
                nowV.push_back(nums[i]);
                dfs(now + 1, len, nums);
                nowV.pop_back();
                vis[i] = 0;
            }
        }

    vector<vector<int>> permute(vector<int>& nums) {
        int len = nums.size();
        for(int i = 0; i < len; i++)
            vis.push_back(0);
        dfs(0, len, nums);

        return ans;
    }
};
相关推荐
oioihoii4 分钟前
C++多线程中join与detach机制深度解析
java·jvm·c++
初圣魔门首席弟子14 分钟前
智能指针使用bug
c++·算法
闻缺陷则喜何志丹27 分钟前
【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+
c++·数学·算法·动态规划·组合数学
CoderCodingNo29 分钟前
【GESP】C++五级真题(贪心考点) luogu-B3872 [GESP202309 五级] 巧夺大奖
开发语言·c++
唐·柯里昂79833 分钟前
[rk3566AI模型部署]泰山派buildroot部署yolov5 使用rknn_model_zoo
c语言·c++·笔记·yolo·rk3566·瑞芯微·泰山派
图形学爱好者_Wu34 分钟前
每日一个C++知识点|const和static的区别
c++
aini_lovee35 分钟前
基于 OpenCV 的模板匹配算法的 C 语言实现
c语言·opencv·算法
进击的小头1 小时前
02_嵌入式C与控制理论入门:自动控制理论核心概念拆解
c语言·单片机·算法
郝学胜-神的一滴1 小时前
Linux 多线程编程:深入理解 `pthread_join` 函数
linux·开发语言·jvm·数据结构·c++·程序人生·算法
Trouvaille ~1 小时前
【C++篇】C++11新特性详解(二):右值引用与移动语义
c++·stl·基础语法·右值引用·默认成员函数·完美转发·移动语义