排序(permute)

import copy

class Solution:

"""

@param: nums: A list of integers.

@return: A list of permutations.

"""

def permute(self, nums):

# write your code here

if nums is None:

return []

if nums == []:

return [[]]

nums.sort()

results = list()

self.dfs(0, nums, results)

return results

def dfs(self, index, nums, results):

# 搜索到结尾, 输出一个结果

if index == len(nums):

results.append(copy.copy(nums))

return

i = index

#print(i, nums)

marked = set()

while i < len(nums):

if nums[i] not in marked:

marked.add(nums[i])

self.switch(index, i, nums)

print(index, i, nums, marked)

# 排列这里是 index + 1 而不是 i + 1. 不然会出现漏掉的情况。组合的话是 i + 1.见 subset

self.dfs(index+1, nums, results)

self.switch(i, index, nums)

i += 1

def switch(self, i, j, array):

array[i], array[j] = array[j], array[i]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容