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

没有重复项数字的全排列

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

显然,排列组合的规律是,依次取数组中的数排在第一位,然后将剩下的数字继续排列组合。
有点要利用递归的思想,假设f(list)是求排列组合的函数,num+f(list)代表num与f(list)的结果做笛卡尔乘积,即可num要与f(list)的所有数组都进行一个组合。
例如,f([1,2,3)=(1+f([2,3]))+(2+f([1,3]))+(3+f([1,2]))
那么我们只需要依次取出list的数字,然后求去除了该数字的list'的排列组合即可。
class Solution:
    def permute(self , num) :
        # write code here
        if len(num)==1:
            return [num]
        else:
            res=[]
            for idx in range(len(num)):
                cur_numlist=num[:idx]+num[idx+1:]
                cur_res=self.permute(cur_numlist)
                cur_num=num[idx]
                for temp in cur_res:
                    res.append([cur_num]+temp)
            return res


全部评论

相关推荐

01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务