No47. Permutations II(Python)

xiaoxiao2021-02-28  62

题目:

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

Example:

Input: [1,1,2] Output: [ [1,1,2], [1,2,1], [2,1,1] ]

思路:

    这道题目和上一道题目有点类似,相当于它的升级版。与之前所不同的地方是要给每一位list元素添加一个用来标志该数字在  本层循环是否被访问过的数组。如果这个元素在本层中已经被访问过了,那么跳过本次循环。

代码:

class Solution(object): def permuteUnique(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ self.res=[] sublists = [] nums = sorted(nums) flagList = [0]*len(nums) self.dfs(nums,sublists,flagList) return self.res def dfs(self,nums,sublists,flagList): if len(nums)==len(sublists): self.res.append(sublists[:]) last = None for i in range(len(nums)): m = nums[i] if(flagList[i] == 1): continue if last == m: continue flagList[i]=1 sublists.append(m) self.dfs(nums,sublists,flagList) last = sublists.pop() flagList[i] = 0
转载请注明原文地址: https://www.6miu.com/read-2619100.html

最新回复(0)