标签:排列 return nums int resultList depth length
1、代码:
https://leetcode-cn.com/problems/permutations-ii/submissions/
class Solution { public List<List<Integer>> permuteUnique(int[] nums) { ArrayList<List<Integer>> resultList = new ArrayList<>(); if (nums == null || nums.length == 0) { return resultList; } dfs(0, nums, resultList); return resultList; } public void dfs(int depth, int[] nums, List<List<Integer>> resultList) { // 递归基 if (depth == nums.length-1) { ArrayList<Integer> oneResult = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { oneResult.add(nums[i]); } resultList.add(oneResult); return; } // 遍历到每一层能做的选择: // 第0层:0号位可以和0,1,2交换; // 第1层:1号位可以和1,2交换; // 第2层:2号位可以和2交换。 for (int i = depth; i < nums.length; i++) { if(isRepeat(nums,depth,i)){ continue; } swap(nums, depth, i); dfs(depth + 1, nums, resultList); swap(nums, depth, i); } } private boolean isRepeat(int[] nums,int depth,int i){ for (int j = depth; j < i; j++) { if(nums[j]==nums[i]){ return true; } } return false; } public void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
。。
标签:排列,return,nums,int,resultList,depth,length 来源: https://www.cnblogs.com/guoyu1/p/15371383.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。