博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣(LeetCode)46
阅读量:5875 次
发布时间:2019-06-19

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

题目地址:

题目描述:
给定一个没有重复数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]

输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
解答:
利用递归,我们可以认为,求一个数组的全排列,就是把这个数组中的每个位置的元素分别放在数组头部
然后求剩余元素的全排列,递归边界是剩余元素数量为1,也就是说当数组中只剩一个元素的时候,它的全
排列就是它本身。
java ac代码:

class Solution {    List
>ans = new ArrayList(1000); public List
> permute(int[] nums) { perm(nums,0,nums.length-1); return ans; } void perm(int[] nums,int i,int j) { if(i == j) { List
temp = new ArrayList(nums.length); for(int k = 0;k < nums.length;k++)temp.add(nums[k]); ans.add(temp); return; } for(int k = i;k <= j;k++) { swap(nums,i,k); perm(nums,i+1,j); swap(nums,i,k); } } void swap(int[] nums,int i,int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }}

转载地址:http://ejkix.baihongyu.com/

你可能感兴趣的文章
加快ALTER TABLE 操作速度
查看>>
学习笔记之软考数据库系统工程师教程(第一版)
查看>>
基本网络概念
查看>>
将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1 RC 1
查看>>
js提交图片转换为base64
查看>>
学习CodeIgniter框架之旅(二)继承自定义类
查看>>
Y2161 Hibernate第三次考试 2016年8月18日 试卷分析
查看>>
Angular CLI 使用教程指南参考
查看>>
PHP 程序员的技术成长规划
查看>>
用于守护进程的出错处理函数
查看>>
AppCan可以视为Rexsee的存活版
查看>>
【转】SQL SERVER 2005 数据库状态为“可疑”的解决方法
查看>>
事件、委托、委托方法的总结(使用EventHandler<>)
查看>>
Revit API 创建带箭头的标注
查看>>
jetty启动报错Unsupported major.minor version 51.0
查看>>
Xamarin.Android开发实践(七)
查看>>
彩色图像上执行Mean Shift迭代搜索目标 ,维加权直方图 + 巴氏系数 + Mean Shift迭代...
查看>>
深入理解JavaScript系列
查看>>
strtol 函数用法
查看>>
eclipse内存溢出设置
查看>>