当前位置: 首页 > article >正文

leetcode 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 中的所有整数 互不相同

分析:先给出位置的全排列,再将对应位置的数字存储下来。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int temp[15],flag[15];
int t_cnt=0;
void getans(int index,int n,int **ans,int *nums)
{
    if(index==n)
    {
        for(int i=0;i<n;++i)
            ans[t_cnt][i]=nums[temp[i]];
        t_cnt++;
        return;
    }
    for(int i=0;i<n;++i)
    {
        if(!flag[i])
        {
            temp[index]=i,flag[i]=1;
            getans(index+1,n,ans,nums);
            flag[i]=0;
        }
    }
}

int** permute(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {
    int cnt=1;
    for(int i=2;i<=numsSize;++i)
        cnt*=i;
    int **ans=(int**)malloc(sizeof(int*)*721);
    for(int i=0;i<721;++i)
        ans[i]=(int*)malloc(sizeof(int)*numsSize);
    
    *returnColumnSizes=(int*)malloc(sizeof(int)*721);
    for(int i=0;i<cnt;++i)
        (*returnColumnSizes+i)[0]=numsSize;
    *returnSize=cnt;
    t_cnt=0;
    getans(0,numsSize,ans,nums);

    return ans;
}


http://www.kler.cn/a/569487.html

相关文章:

  • C语言(3)—循环、数组、函数的详解
  • 【面经】CPP经典面试手撕{LRUCache、字典树、布隆过滤器}
  • AWS S3 如何设置公开访问权限?
  • 物联网水位计集成GPS
  • python科学计数法转数值
  • 微服务学习(3):Work Queues的作用与测试
  • 《白帽子讲 Web 安全:点击劫持》
  • 计算机毕业设计SpringBoot+Vue.js林业产品推荐系统 农产品推荐系统 (源码+文档+PPT+讲解)
  • 【Git】Ubuntu 安装 Git Large File Storage(LFS)以及使用 Git LFS 下载
  • AI 时代下,操作系统如何进化与重构?
  • 打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题
  • 2.1 第一个程序:从 Hello World 开始
  • 量子计算在材料科学中的应用:开辟新技术前沿
  • 极简RabbitMQ快速学习
  • Python 如何实现烟花效果的完整代码
  • 【区块链 + 智慧政务】 伽罗华域:区块链数据溯源系统 | FISCO BCOS 应用案例
  • Linux 下使用mtr命令来进行网络诊断
  • Docker数据卷操作实战
  • 【Java分布式】Nacos注册中心
  • 最大子数组和力扣--53