例: [1, 1, 2, 3]
步骤:
[1] + permuteUnique([1, 2, 3])中的每一个item
[1]重复了,直接跳过
[2] + permuteUnique([1, 1, 3])中的每一个item
[3] + permuteUnique([1, 1, 2])中的每一个item

基本思路:
遍历list中每一个value,如果value没有出现过,[value] + permuteUnique(去掉本value的list)中的每一个item就是一个结果
需要一个dict记录一个value出现过没有
注意边缘情况, length = 0 和 1

class Solution:
    def permuteUnique(self, num):
        if len(num) == 0:
            return []
        if len(num) == 1:
            return [num]
        result = []
        dict = {}
        for idx, value in enumerate(num):
            if value not in dict:
                dict[value] = True
                tmp = self.permuteUnique(num[: idx] + num[idx + 1:])
                for item in tmp:
                    current = [value] + item
                    result.append(current)
            else:
                continue

        return result