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;
    }
};
相关推荐
感哥36 分钟前
C++ 面向对象
c++
沐怡旸2 小时前
【底层机制】std::shared_ptr解决的痛点?是什么?如何实现?如何正确用?
c++·面试
感哥8 小时前
C++ STL 常用算法
c++
saltymilk19 小时前
C++ 模板参数推导问题小记(模板类的模板构造函数)
c++·模板元编程
感哥19 小时前
C++ lambda 匿名函数
c++
沐怡旸1 天前
【底层机制】std::unique_ptr 解决的痛点?是什么?如何实现?怎么正确使用?
c++·面试
感哥1 天前
C++ 内存管理
c++
博笙困了1 天前
AcWing学习——双指针算法
c++·算法
感哥1 天前
C++ 指针和引用
c++
感哥2 天前
C++ 多态
c++