营销型企业网站怎么建站,重庆网站公司建设,做网站的是干嘛的,delphi可以做网站吗题目链接 给出一组数字#xff0c;返回该组数字的所有排列 例如#xff1a; [1,2,3]的所有排列如下 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1]. #xff08;以数字在数组中的位置靠前为优先级#xff0c;按字典序排列输出。#xff09; 思路#xff1a;
使用回…题目链接 给出一组数字返回该组数字的所有排列 例如 [1,2,3]的所有排列如下 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1]. 以数字在数组中的位置靠前为优先级按字典序排列输出。 思路
使用回溯每次选择一个数字画出回溯二叉树。回溯的过程中如果收集过该元素就跳过不用对其进行回溯。我这里是通过该元素是否在path数组中出现过来筛选的也可以用通用一点的used数组记录哪些元素被使用过。这个used在Day20的题目用到。
代码
import copyresult [] # 全局元素记录收集好的路径
def traverse(nums, path):if len(path) len(nums): // 当收集的路径长度等于num长度时即为收集好了tmp copy.deepcopy(path) // 注意一定要使用深拷贝result.append(tmp)returnfor i in range(len(nums)):if nums[i] in path: //如果收集过就跳过。用是否在数组中出现过来筛选。continueelse:path.append(nums[i])traverse(nums, path)path.pop()class Solution:def permute(self, num: List[int]) - List[List[int]]:traverse(num, [])return result 隔三差五还债终于忙完家里的事情有精力去刷题了