https://leetcode-cn.com/problems/permutations-ii/
# -*- coding:utf-8 -*- class Solution(object): def permuteUnique1(self, nums): def backtrack(i, flag_list, temp_list=[]): if i == n: output.append(temp_list) return # 找到第一个可用数字 for j in range(len(flag_list)): if flag_list[j] != 0: flag_list[j] = 0 temp_list.append(nums[j]) backtrack(i + 1, flag_list[:], temp_list[:]) flag_list[j] = 1 temp_list = temp_list[:-1] n = len(nums) output = [] flag_list = [1 for _ in range(n)] output_final = [] backtrack(0, flag_list) for each in output: if each not in output_final: output_final.append(each) return output_final if __name__ == '__main__': nums = [1, 1, 2] print(Solution().permuteUnique1(nums))
思路:这道题我甚至犹豫要不要写这个笔记2333。虽然我知道出题人不是这个意思,但是在上一道题后面加个去重就行。
其实排序一下剪枝就行了,多一个位置记录上一次处理的值,一样剪枝跳过就行,但是不写了x
0 条评论