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

没有重复项数字的全排列

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param num int整型一维数组 
# @return int整型二维数组
#
class Solution:
    def permute(self , num: List[int]) -> List[List[int]]:
        # write code here
        if len(num) == 1:
            return [num]
        
        a = num [0]

        result = []

        sub_results = self.permute(num[1:])

        l = len(sub_results)

        for i in range(l):
            result.append([a]+sub_results[i])
        
        for i in range(l):
            for j in range(1, len(num)):
                result.append(sub_results[i][0:j]+[a]+sub_results[i][j:])
        
        return result

DP的思想。

因为所有数字没有重复,所以可以选一个,比如a=num[0],然后变为子问题排列num[1:]

最后再把a和子排列permute(num[1:])进行merge,a可以放在任意一个子排列的头,中间,尾部的位置

#我的实习求职记录#
实习算法题题解 文章被收录于专栏

实习算法题

全部评论

相关推荐

zygg:拼多多挂是不是过一两天就挂的呀
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务