Leetcode-47. Permutations II
2016-10-04 16:52
295 查看
前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
这个题目其实就是稍微加大了一下46题的难度,主要是46写的不够鲁棒,结果47还要修改,应该47的能直接到46用。修改的地方就是每次递归的时候判断一下当前处理的值和 前一个是否相同,相同则跳过。Your
runtime beats 32.19% of java submissions.
博客链接:mcf171的博客
——————————————————————————————
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2]have the following unique permutations:
[ [1,1,2], [1,2,1], [2,1,1] ]
这个题目其实就是稍微加大了一下46题的难度,主要是46写的不够鲁棒,结果47还要修改,应该47的能直接到46用。修改的地方就是每次递归的时候判断一下当前处理的值和 前一个是否相同,相同则跳过。Your
runtime beats 32.19% of java submissions.
public class Solution { public List<List<Integer>> permuteUnique(int[] nums) { if(nums.length == 0) return new ArrayList<List<Integer>>(); List<List<Integer>> results = new ArrayList<List<Integer>>(); List<Integer> result = new ArrayList<Integer>(); if(nums.length == 1){ result.add(nums[0]); results.add(result); return results; } Arrays.sort(nums); List<Integer> stores = new ArrayList<Integer>(); for(int num : nums) stores.add(num); generateNext(stores,result,results); return results; } public void generateNext(List<Integer> stores,List<Integer> result, List<List<Integer>> results){ int length = stores.size(); if(length == 1) { result.add(stores.get(0)); results.add(new ArrayList<Integer>(result)); result.remove(result.size() - 1); } else{ for(int i = 0 ; i < length ; i ++){ if( i == 0 || stores.get(i) != stores .get(i-1)){ int number = stores.get(i); result.add(number); stores.remove(i); generateNext(new ArrayList<Integer>(stores),result,results); stores.add(i,number); result.remove(result.size() - 1); } } } } }
相关文章推荐
- leetcode-47. Permutations II(重复元素全排列)
- [LeetCode]47 Permutations II
- Leetcode 47. Permutations II
- 【LeetCode】47. Permutations II
- LeetCode 47. Permutations II(生成不同的组合-dfs)
- Leetcode 47. Permutations II (Medium) (cpp)
- LeetCode 47.Permutations II
- Leetcode 47 Permutations II
- LeetCode 47 Permutations II
- leetcode_middle_93_47. Permutations II
- leetcode - 47.Permutations II
- [LeetCode]--47. Permutations II
- [leetcode-47]Permutations II(java)
- Leetcode 47 Permutations II
- leetCode 47.Permutations II (排列组合II) 解题思路和方法
- 【LeetCode】47.Permutations II(Medium)解题报告
- LeetCode 47 - Permutations II
- 【LeetCode-47】Permutations II
- leetcode——47——Permutations II
- LeetCode - 47. Permutations II