LeetCode 47 Permutations II(全排列)
2024-08-24 06:57:29
给出数组,数组中的元素可能有重复,求出所有的全排列
使用递归算法:
传递参数 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);
}
}
}
最新文章
- VBA学习
- SE(homework3)_敏捷模型
- 【PHP开发篇】一个统计客户端商机提交的获取IP地址
- iOS代码加密常用加密方式
- ASP.NET 系列:单元测试之Log4Net
- ISurfaceOp 接口生成等高线
- 每天一个linux命令(7):cp 命令
- 在CSS中,BOX的Padding属性的数值赋予顺序为
- mysql,多对多的hibernate操作对应的jdbc操作
- Spark生态之SparkR
- count(*),count(1)和count(主键) 区别
- BZOJ 2879: [Noi2012]美食节( 费用流 + 动态加边 )
- fflush(stdin)与fflush(stdout)
- 解决Visual Studio 加载符号卡死情况
- [C#] C# 知识回顾 - 装箱与拆箱
- spring-aop 的注释用法
- maven settings.xml配置优化
- Jenkins的多个任务并串联参数传递
- td内的所有数字格式化保留两位小数
- phpMyadmin导入导出数据中出现的错误处理
热门文章
- jq dom不存在时绑定事件
- Linux 下 Nginx + JDK + Tomcat + MySQL 安装指南
- 腾讯爱玩某处csrf导致骚扰用户(QQ弹窗+QQ会话+微博)
- CentOS 65 安装vmware tools 杂记
- 内存管理 初始化(七)kmem_cache_init_late 初始化slab分配器(下)
- Node.js+Express on IIS(续)
- 【调研】在总体为n的情况下,多少样本有代表性?
- 【QT】error: macro ";SIGNAL"; passed 3 arguments, but takes just 1
- mysql 两台主主复制配置
- sql2008,sa不能使用:不能为主体 sa 中设置凭据