C语言 | Leetcode C语言题解之第46题全排列

news/2024/9/23 1:06:44/

题目:

题解

void swap(int * nums,int indexA,int indexB)
{int temp    = nums[indexA];nums[indexA]= nums[indexB];nums[indexB]= temp;
}void prem(int* nums, int numsSize, int* returnSize, int** returnColumnSizes,int** returnNums,int offset)
{if(offset == numsSize){//遍历到末尾了//申请returnNumsreturnNums[*returnSize] = (int *)malloc(sizeof(int ) * numsSize);//拷贝内容到returnNumsmemcpy(returnNums[*returnSize],nums,sizeof(int) * numsSize );//记录当前拷贝内容的长度(*returnColumnSizes)[*returnSize] = numsSize;*returnSize = *returnSize + 1;}else{//回溯算法的核心int i;for(i = offset; i < numsSize; i++){swap(nums,i,offset);//i 和 offset 交换prem(nums,numsSize,returnSize,returnColumnSizes,returnNums,offset+1);swap(nums,i,offset);//i 和 offset 交换}}
}int** permute(int* nums, int numsSize, int* returnSize, int** returnColumnSizes)
{//不重复的数字的全排序//组合次数为 n!= n *( n - 1) *( n - 2) ...... 2 * 1//这样的方法适合回溯的方法//取值范围1 <= nums.length <= 6  = 6 * 5 * 4 * 3 *2 * 1 = 720中可能int **returnNums = (int **)malloc(sizeof(int *) * 721);*returnColumnSizes= (int *)malloc(sizeof(int ) * 721);*returnSize = 0;prem(nums,numsSize,returnSize,returnColumnSizes,returnNums,0);return returnNums;}

http://www.ppmy.cn/news/1444888.html

相关文章

如何实现瀑布流排列方式

瀑布流布局是一种流行的网页布局方式&#xff0c;它允许列的高度不一致&#xff0c;但宽度一致&#xff0c;从而给人一种流动的视觉效果。然而&#xff0c;使用纯CSS实现瀑布流布局并不简单&#xff0c;因为CSS本身并不支持动态计算元素的高度和位置。尽管如此&#xff0c;我们…

django设计模式理解FBV和CBV

在 Web 开发中&#xff0c;FBV&#xff08;Function-Based Views&#xff09;和 CBV&#xff08;Class-Based Views&#xff09;是两种常见的视图设计模式&#xff0c;用于处理 HTTP 请求并生成相应的响应。下面是它们的简要解释&#xff1a; Function-Based Views (FBV) 在 …

关键技术自主可控,中国移动发布大云磐石DPU芯片,速率达400Gbps

4月28日&#xff0c;中国移动在2024算力网络大会上正式发布大云磐石DPU&#xff0c;该芯片带宽达到400Gbps&#xff0c;为国内领先水平&#xff0c;将应用于移动云新一代大云磐石DPU产品&#xff0c;实现关键技术自主可控。 据介绍&#xff0c;DPU是一种专注于数据处理的处理器…

[机器学习系列]深入解析K-Means聚类算法:理论、实践与优化

目录 一、KMeans (一)Kmeans简介 (二)Kmeans作用和优点 (三)Kmeans局限和缺点 (四)Kmeans步骤 (五)如何选取最佳的K值的三种方法 (六)手肘法和目标函数的变化两种确定K值方法的区别 (七)如何选取第一次迭代的K个类中心------KMeans方法 (八)KMeans的常用参数介绍 二、…

Shell脚本入门:编写自动化任务的利器

一、Shell概述 Shell最早产生于20世纪70年代早期的Unix操作系统中。作为一种命令解释器&#xff0c;它位于操作系统的最外层&#xff0c;负责直接与用户进行交互。Shell把用户的输入解释给操作系统&#xff0c;并处理操作系统的输出结果&#xff0c;然后将其反馈给用户。这种交…

Ajax 解决浏览器缓存问题原理和例子

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建交互式网页应用的网页开发技术。在使用Ajax进行请求时&#xff0c;有时可能会遇到浏览器缓存问题。浏览器默认会对一些请求进行缓存&#xff0c;以便在下次请求相同的资源时能够更快地加载。然而&am…

前端如何将接口传来的列表数据(数组)直接下载成csv文件

前言&#xff1a;最近遇到一个需求&#xff0c;需要实现一个下载表格数据的操作&#xff0c;一般来说是前端请求后端的下载接口&#xff0c;将文件流下载下来&#xff0c;但是因为这个项目任务时间比较紧&#xff0c;后端没时间做下载接口&#xff0c;所以暂时由前端直接调列表…

智能物联网时代:Web3连接智能设备的未来

随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已经成为了现代生活中不可或缺的一部分。从智能家居到智能城市&#xff0c;物联网技术正在改变我们的生活方式和工作方式。而Web3作为下一代互联网的重要组成部分&#xff0c;将为智能物联网带来哪些新的可能性…