LeetCode Permutaions II
LeetCode-solving Permutaions II
Original question
OutputRepeatedArray of numbers.
Note:
Duplicate numbers may cause repeated sorting
Example:
Input: nums = [1, 2, 1]
Output: [[1, 1, 2], [1, 2, 1], [2, 1, 1]
Solutions
This is the enhanced version of Permutations in the previous question. Now we need to consider repeated numbers. We adopt a lazy method to sort the array first, and ignore repeated numbers directly during the time, you only need to add two lines of code based on the original one.
AC Source Code
class Solution(object): def permuteUnique(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ result = [] nums.sort() self.get_permute([], nums, result) return result def get_permute(self, current, num, result): if not num: result.append(current + []) return for i, v in enumerate(num): if i - 1 >= 0 and num[i] == num[i - 1]: continue current.append(num[i]) self.get_permute(current, num[:i] + num[i + 1:], result) current.pop()if __name__ == "__main__": assert Solution().permuteUnique([1, 2, 1]) == [[1, 1, 2], [1, 2, 1], [2, 1, 1]]