P46 全排列

今天的题很简单,一道dfs的题目

Screenshot 2025-10-21 091956.png

class Solution {
public:
    void dfs(int x,vector<int> &ras,vector<vector<int>> &ans,vector<int> &k,vector<int> &st){
        if(x == ras.size()){
            ans.push_back(k);
            return ;
        } 
        for(int i = 0;i < ras.size();i++){
            if(!st[i]){
                k.push_back(ras[i]);
                st[i] = true;
                dfs(x + 1, ras, ans, k, st);
                k.pop_back();
                st[i] = false;
            }
        }
    }
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>> ans;
        int len = nums.size();
        vector<int> k;
        vector<int> st(len, false);
        dfs(0 , nums , ans, k, st);
        return ans;
    }
};

Screenshot 2025-10-21 093353.png

之前刷算法题的时候经常做这种dfs 的题目。

当时刷洛谷,航电什么的 , 力扣上的题不推荐使用全局变量, 和竞赛的题不同,参数有点多,反应了半天。(越来越菜了)OvO

迷茫java练习生