算法<不含相同元素数组的全排列>
来源:互联网 发布:赣州淘宝培训 编辑:程序博客网 时间:2024/05/20 02:50
这里只考虑元素是各不相同的情况
思路:全排列其实可以从前往后,分别将每一个数字与其后面的数字进行交换,从而得到所有的结果。比如由1,2,3可以得到1,2,3、2,1,3、3,2,1三种,然后有1,2,3可以得到1,2,3和1,3,2,依次类推。
化成图就是下面的结果:
代码如下:
import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;import java.util.stream.IntStream;/** * @author * @version 2017/7/5.19:28 */public class Demo { public static void main(String[] args) { int[] nums = {1, 2, 3}; List<List<Integer>> result = new Demo().permute(nums); for (List<Integer> integers : result) { for (Integer integer : integers) { System.out.print(integer + " "); } System.out.println(); } } public List<List<Integer>> permute(int[] nums) { List<List<Integer>> res = new ArrayList<>(); helper(res, nums, 0); return res; } private static void helper(List<List<Integer>> res, int[] nums, int start) { if (start == nums.length - 1) { //将int[]转换为List List<Integer> temp = IntStream.of(nums).boxed().collect(Collectors.toList()); res.add(temp); return; } for (int i = start; i < nums.length; ++i) { swap(nums, start, i); helper(res, nums, start + 1); swap(nums, start, i); } } private static void swap(int[] A, int i, int j) { int temp = A[i]; A[i] = A[j]; A[j] = temp; }}
阅读全文
0 0
- 算法<不含相同元素数组的全排列>
- 算法<含相同元素数组的全排列>
- 全排列算法:不含重复元素,包含重复元素,字母序排列
- 含重复元素的全排列
- 含重复元素序列的全排列
- 含重复元素的全排列
- 数组元素的全排列
- 数组的全排列算法
- 给定一个有序的数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉查找树?
- 【Java】给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树
- n个元素的全排列算法
- 比较等长数组的所含元素相同,比较
- JS全排列的7种算法总结(不重复元素)
- 给定一个有序数组,元素各不相同且升序排列,创建一个高度最小的二叉查找树
- 求一个数组的全排列算法
- 求字符数组的全排列算法
- 数组全排列算法的python实现
- 数组内字符的全排列算法
- Python编程_Lesson010_函数高级特性
- [LintCode]98.链表排序
- ES5书写规范
- 实验吧——WriteUp&&涨姿势(7)
- JQuery基础_01
- 算法<不含相同元素数组的全排列>
- inline 内联函数 constexper 函数 函数重载与函数匹配
- java-day07-Thread-线程调度
- java.lang.string.split用法
- VS2015动态库编程之MFC规则动态库(上)
- 关于free与malloc的使用
- spring-cloud-starter-feign 组件在spring boot中的应用:访问Oauth2资源服务器的资源接口
- SVN
- lambda 表达式