题解 | 没有重复项数字的全排列

没有重复项数字的全排列

https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1

简要思想:

将当前的num排序 (python的sorted支持对list排序), 然后从num第一个数开始遍历到最后一个数.

对每个数字将其当作头部, 剩余数字组成下次递归的数组, 递归后得到排序后的所有全排列尾部, 之后将头部和每个全排列尾部拼接, 就是当前num的一个全排列.

class Solution:
    def permute(self, num: List[int]) -> List[List[int]]:
        # write code here
        if len(num) == 1:
            return [num]
        ret = []
        tmp_nums = sorted(num)
        for i in range(len(tmp_nums)):
            head = tmp_nums[i]
            tail = tmp_nums[:i] + tmp_nums[i + 1 :]
            # print(tail)
            permuted_tails = self.permute(tail)
            for permuted_tail in permuted_tails:
                ret.append([head] + permuted_tail)
        return ret

全部评论

相关推荐

敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务