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;
    }
};
相关推荐
逐步前行2 小时前
C标准库--C99--布尔型<stdbool.h>
c语言·开发语言
SunnyKriSmile2 小时前
C语言译码操作
c语言·算法·if语句·译码操作·switch语句
傻童:CPU2 小时前
C语言需要掌握的基础知识点之线性表
c语言·1024程序员节
Heavy sea3 小时前
Linux串口应用编程
linux·c语言·1024程序员节
再睡一夏就好3 小时前
【C++闯关笔记】详解多态
c语言·c++·笔记·学习·语法·1024程序员节
喜欢吃燃面6 小时前
数据结构算法题:list
开发语言·c++·学习·算法·1024程序员节
胡萝卜3.06 小时前
C++ list核心接口与实战技巧
数据结构·c++·list·list使用
。TAT。6 小时前
C++ - 多态
开发语言·c++·学习·1024程序员节
mit6.8246 小时前
[cpprestsdk] JSON类--数据处理 (`json::value`, `json::object`, `json::array`)
c++·1024程序员节
武当豆豆6 小时前
C++编程学习(第42天)
开发语言·c++·学习