题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
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可以放在任意一个子排列的头,中间,尾部的位置
#我的实习求职记录#实习算法题题解 文章被收录于专栏
实习算法题