首页 > 其他分享 >全排列(递归)

全排列(递归)

时间:2025-01-08 10:52:39浏览次数:1  
标签:排列 return 递归 nums int vector ans

题目链接:https://leetcode.cn/problems/permutations/

思路:

只用题目给的nums数组进行递归,swap进行交换,注意还原现场

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
            vector<vector<int>>ans;
            f(nums,ans,0);
            return ans;
    }
    void f(vector<int>nums,vector<vector<int>>&ans,int i)
    {
        if(i==nums.size())
        {
            ans.push_back(nums);
            return;
        }
        for(int j=i;j<nums.size();j++)
        {
            swap(nums[i],nums[j]);
            f(nums,ans,i+1);
            swap(nums[i],nums[j]);
        }
    }
};

标签:排列,return,递归,nums,int,vector,ans
From: https://www.cnblogs.com/benscode/p/18659180

相关文章

  • Java实现回文排列问题的探讨
    Java实现回文排列问题的探讨在编程的世界里,解决一个具体问题往往有多种方法,而选择合适的方法不仅能提高代码的效率,还能让代码更加优雅易懂。今天,我们就来探讨一下如何使用Java语言来解决一个有趣的问题——回文排列问题。问题描述回文排列问题源自LeetCode的第266题,它要求我们......
  • 代码随想录:二叉树的递归遍历
    代码随想录:二叉树的递归遍历现在是找借口时间,一开始是期末考试太忙了,后来是过年放假,一晃这么久没写题了,这样不好。,看了一下我现在leetcode才40多道题呢定个目标,三月之前刷完代码随想录,并且把hot100的简单中等题都写了。/***Definitionforabinarytreenode.*structTre......
  • 子集(递归)
    题目链接:https://leetcode.cn/problems/subsets-ii/submissions/591733085/题意:给你一个数组,输出不同数字的组合(若两个组合都挑一个1,一个2,无论顺序如何,只输出一个)思路:先排序,将不同数字分组,再讨论每组选0,1,2,...n个的情况classSolution{public:vector<vector<int>>sub......
  • 爬楼梯(动态规划/递归)
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+......
  • [20250103]使用递归实现distinct功能.txt
    [20250103]使用递归实现distinct功能.txt--//生产系统遇到实际上许多条类似语句,顺便拿其中几个出来,真心不知道开发如何学计算机的。1.问题提出:SYS@127.0.0.1:9106/xtdb/xtdb2>@sql_idc29undaquszs6--SQL_ID=c29undaquszs6comefromsharedpoolselectdistinctritemfrom......
  • [AHOI2018初中组] 球球的排列
    前言紫题,启动!思路转化题意对于\(n\)个物品,每个物品拥有特征值\(a_i\),其编号为\(i\)一个合法的排列定义为:\(\foralli\in[1,n),a_{p_i}\cdota_{p_i+1}\)不是一个完全平方数求合法排列的数量这个题听别人讲过,一如既往地忘掉了怎么做呢?看了下......
  • 分披萨,关键在于吃货可能取左或者取右,利用max(递归调用左边,递归调用右边),相当于暴力获取
    #include<bits/stdc++.h>usingnamespacestd;intn;//披萨个数intpizza[500];//n个披萨大小longcache[500][500];intcheck(intid){  if(id<0)    id=n-1;//若取走披萨第一块的左边,则循环相当于最后一块  if(id>=n)  {    id=0;//......
  • 计算全排列的方法有哪些?
    计算全排列的方法主要有以下几种:递归法:递归法是实现全排列最常见的方法之一,尤其适用于小规模全排列计算。算法思路是将数组分成已知部分(第一个元素)与未知部分(除第一个元素外的数组),每次递归时取未知部分的第一个元素到已知部分中,再将后面的元素进行全排列,直至递归结束。......
  • 【初阶数据结构与算法】排序算法总结篇(每个小节后面有源码)(直接插入、希尔、选择、堆
    文章目录一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序七、归并排序八、计数排序九、非递归快速排序十、非递归归并排序本篇内容将从稳定性与复杂度等角度分析排序算法,列出它们的特点、优点以及缺点,希望大家有所收获,如果想更加细......
  • 函数递归与栈帧的创建与销毁
    目录函数递归函数栈帧的创建与销毁概述 main函数栈帧的创建变量的创建如何传参子函数栈帧的创建函数如何返回值(1)子函数栈帧的销毁函数如何返回值(2)函数递归将复杂的问题层层化为与原问题相似的规模较小的问题。递----递推、归----回归 递推:函数一直......