给出数组,数组中的元素可能有重复,求出所有的全排列
 
使用递归算法:
 
传递参数 List<List<Integer>> list, List<Integer> tempList, int[] nums, boolean[] used
 
其中list保存最终结果
tempList保存其中一个全排列组合
nums保存初始的数组
used随着计算不断进行更新操作,记录所有数字是否已经使用
参考代码:
package leetcode_50;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; /***
*
* @author pengfei_zheng
* 给定数组元素可能重复,求出所有全排列
*/
public class Solution47 {
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
if(nums==null || nums.length==0) return ans;
boolean[] used = new boolean[nums.length];
List<Integer> list = new ArrayList<Integer>();
Arrays.sort(nums);
prem(ans,list,nums,used);
return ans;
} private static void prem(List<List<Integer>> list, List<Integer> tempList, int[] nums, boolean[] used) {
if(tempList.size()==nums.length){
list.add(new ArrayList<>(tempList));
}
else{
for(int i = 0; i < nums.length; i++){
if(used[i] || i>0 && nums[i]==nums[i-1] && !used[i-1]) continue;
used[i]=true;
tempList.add(nums[i]);
prem(list,tempList,nums,used);
used[i]=false;
tempList.remove(tempList.size()-1);
}
}
}
public static void main(String[]args){
int []nums={3,0,3,3};
List<List<Integer>> list = permute(nums);
for(List<Integer> item:list){
System.out.println(item);
}
}
}

最新文章

  1. VBA学习
  2. SE(homework3)_敏捷模型
  3. 【PHP开发篇】一个统计客户端商机提交的获取IP地址
  4. iOS代码加密常用加密方式
  5. ASP.NET 系列:单元测试之Log4Net
  6. ISurfaceOp 接口生成等高线
  7. 每天一个linux命令(7):cp 命令
  8. 在CSS中,BOX的Padding属性的数值赋予顺序为
  9. mysql,多对多的hibernate操作对应的jdbc操作
  10. Spark生态之SparkR
  11. count(*),count(1)和count(主键) 区别
  12. BZOJ 2879: [Noi2012]美食节( 费用流 + 动态加边 )
  13. fflush(stdin)与fflush(stdout)
  14. 解决Visual Studio 加载符号卡死情况
  15. [C#] C# 知识回顾 - 装箱与拆箱
  16. spring-aop 的注释用法
  17. maven settings.xml配置优化
  18. Jenkins的多个任务并串联参数传递
  19. td内的所有数字格式化保留两位小数
  20. phpMyadmin导入导出数据中出现的错误处理

热门文章

  1. jq dom不存在时绑定事件
  2. Linux 下 Nginx + JDK + Tomcat + MySQL 安装指南
  3. 腾讯爱玩某处csrf导致骚扰用户(QQ弹窗+QQ会话+微博)
  4. CentOS 65 安装vmware tools 杂记
  5. 内存管理 初始化(七)kmem_cache_init_late 初始化slab分配器(下)
  6. Node.js+Express on IIS(续)
  7. 【调研】在总体为n的情况下,多少样本有代表性?
  8. 【QT】error: macro &quot;SIGNAL&quot; passed 3 arguments, but takes just 1
  9. mysql 两台主主复制配置
  10. sql2008,sa不能使用:不能为主体 sa 中设置凭据