博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 【46. Permutations】
阅读量:6991 次
发布时间:2019-06-27

本文共 1123 字,大约阅读时间需要 3 分钟。

Given a collection of distinct numbers, return all possible permutations.

For example,

[1,2,3] have the following permutations:

[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3,2,1]] 思路: 首先,固定第一个数字,递归求后序数组的全排列,比如example中,递归过程为:固定1,求[2,3]的全排列,然后固定2,求[3]的全排列,固定[3]求,空数组的全排列,由于此时数组为空,所以将结果保存,返回。 然后交换位子,继续进行递归,说的有点不是很明白,看一张图就比较清晰了。如图是一颗枚举树。现在的问题是怎么出现1,2,3开头的节点呢?就是使用交换,比如1和2交换,得到[2,1,3]固定2,求[1,3]的全排列。 那交换以后怎么得到3开头的呢?由于是递归,所以可以交换回1,2然后再交换1,3得到3开头的。

代码

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

 

转载于:https://www.cnblogs.com/rockwall/p/5761858.html

你可能感兴趣的文章
重写和强制转换再调用能编译但不能运行
查看>>
logging ,re 模块
查看>>
Android入门之GridView(表格控件)
查看>>
JavaScript基础篇
查看>>
Cesium 加载天地图
查看>>
Centos7中安装最新版maven3.5.0
查看>>
python学习之老男孩python全栈第九期_数据库day003 -- 作业
查看>>
深度优先遍历
查看>>
常用类型转换 一.常用int和string类型转换
查看>>
Ext Js简单Grid分页及选择器的使用
查看>>
slice 定义和用法
查看>>
分类游戏 结构体
查看>>
导出、恢复、上传镜像
查看>>
java第一个程序提示找不到符号-System.out.printIn
查看>>
LineageOS源码定制手机系统
查看>>
flask怎样获取authorization
查看>>
Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条...
查看>>
HTMl5的sessionStorage和localStorage的一些区别
查看>>
Find Minimum in Rotated Sorted Array
查看>>
Android Studio模拟器的问题及解决办法
查看>>