leetcode日记(36)全排列

想思路想了很久......思路对了应该会很好做。

我的思路是这样的:只变化前n个数字,不断增加n,由2到nums.size(),使用递归直到得到所有结果

代码如下:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>> v;
        v.push_back(nums);
        hs(v,1,nums);
        return v;
    }
    void hs(vector<vector<int>> &v,int n,vector<int> nums){
        if(n==nums.size()) return;
        int m=nums[n];
        nums.erase(nums.begin()+n);
        for(int i=n;i>=0;i--){
            nums.insert(nums.begin()+i,m);
            if(i!=n) v.push_back(nums);
            hs(v,n+1,nums);
            nums.erase(nums.begin()+i);
        }
    }
};
相关推荐
情怀姑娘17 小时前
面试题---------------场景+算法
java·算法·mybatis
chbmvdd17 小时前
week5题解
数据结构·c++·算法
用户120391129472617 小时前
面试官最爱问的字符串反转:7种JavaScript实现方法详解
算法·面试
vir0217 小时前
小齐的技能团队(dp)
数据结构·c++·算法·图论
Star在努力18 小时前
C语言复习八(2025.11.18)
c语言·算法·排序算法
南山安18 小时前
从反转字符串看透面试官的“内心戏”:你的算法思维到底怎么样?
javascript·算法·面试
雪不下18 小时前
计算机中的数学:概率(2)
算法
zs宝来了18 小时前
HOT100-二分查找类型题
算法
_w_z_j_18 小时前
数组中的最长连续子序列
数据结构·算法
地平线开发者18 小时前
征程 6E/M 计算平台部署指南
算法·自动驾驶