【LintCode】数组的全排序(1)
2017-08-28 17:45
417 查看
给定一个数组,返回其所有可能的排列。
注意事项
你可以假设没有重复数字。
样例
给出一个数组abc,
其全排列为:
abc
acb
bac
bca
cba
cab
Java:
注意事项
你可以假设没有重复数字。
样例
给出一个数组abc,
其全排列为:
abc
acb
bac
bca
cba
cab
Java:
public class Solution{ private static void print(char[] arr){ if(arr == null || arr.length == 0){ return; } for(int i = 0; i < arr.length; i++){ System.out.print(arr[i]); } System.out.println(); } private static void swap(char[] ch, int i, int k){ char temp = ch[i]; ch[i] = ch[k]; ch[k] = temp; } private static void permutation(char[] arr, int k){ //递归:f(n) = k·f(n-1),将字符串中每一个元素都放到第k位(假设就是首位,即k设为0),剩下的n-1个进行全排列(递归) // (k 4000 <= arr.length-1) if(k == arr.length - 1){ print(arr); return; } for(int i = k; i < arr.length; i++) { swap(arr,i,k); permutation(arr,k+1); swap(arr,i,k); } } public static void main(String[] args){ char[] ch = {'a','b','c'}; permutation(ch,0); } }
相关文章推荐
- Lintcode 将数组重新排序以构造最小值
- 【LintCode 简单】177. 把排序数组转换为高度最小的二叉搜索树
- LintCode 177-把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树-LintCode
- lintCode(177)——把排序数组转换为高度最小的二叉搜索树
- [Lintcode] #100 删除排序数组中的重复数字
- LintCode:搜索旋转排序数组
- [LintCode]159.寻找旋转排序数组中的最小值
- lintcode,把排序数组转换为高度最小的二叉搜索树
- LintCode【简单】39. 恢复旋转排序数组 。代码及思路
- 寻找旋转排序数组中的最小值 II -LintCode
- 【LintCode】Recover Rotated Sorted Array 恢复旋转排序数组
- LintCode-删除排序数组中的重复数字 II
- lintcode, 两个排序数组的中位数
- lintcode-160-寻找旋转排序数组中的最小值 II
- LintCode-寻找旋转排序数组中的最小值
- lintcode-63-搜索旋转排序数组 II
- LintCode 把排序数组转换为高度最小的二叉搜索树
- LintCode-合并排序数组 II
- 删除排序数组中的重复数字-LintCode