#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time: 2019/3/13
# @Author: xfLi
# The file...
"""
问题分析:
还是回溯法,只是这次,在进行深度优先搜索的之前,先进行一次排序,
目的就是为了把相同的数字放到一起,在每层选择中,如果同数字出现重复,
那么就选择一次,并依次类推。走到头,添加到输出数组,并回溯到上一层,直到结束。
"""
def permute(nums):
nums.sort()
res = []
def depthOrderTraverse(nums=nums, path=[]):
if not nums:
res.append(path)
for i in range(len(nums)):
if i > 0 and nums[i] == nums[i-1]:
continue
depthOrderTraverse(nums[:i] + nums[i+1:], path + [nums[i]])
depthOrderTraverse()
return res
if __name__ == '__main__':
nums = [3, 3, 0, 3]
result = permute(nums)
print(result)
【LeetCode】47.全排列Ⅱ
猜你喜欢
转载自blog.csdn.net/qq_30159015/article/details/88537381
今日推荐
周排行