语文建设 官方网站网页ui设计网站
2026/2/18 19:32:12 网站建设 项目流程
语文建设 官方网站,网页ui设计网站,网站怎么才有alexa排名,凡科建站做的网站有什么短板这道题出现的频率非常高#xff0c;几个小伙伴都反馈抽到这道题。 题目描述 给定一个不含重复数字的数组 nums #xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例一 输入#xff1a;nums [1,2,3] 输出#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,…这道题出现的频率非常高几个小伙伴都反馈抽到这道题。题目描述给定一个不含重复数字的数组nums返回其所有可能的全排列。你可以按任意顺序返回答案。示例一输入nums [1,2,3] 输出[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例二输入nums [0,1] 输出[[0,1],[1,0]]示例三输入nums [1] 输出[[1]]提示1 nums.length 6-10 nums[i] 10nums中的所有整数互不相同题解力扣原题链接思路:递归回溯总体思路有n个位置每个位置尝试放置不同数从而达到获取所有排列方式。前面的位置选择的数后面的位置不能在选择。通过1的思路进行拆解要想每个位置尝试放置不同数实现很简单使用循环遍历原数组就行每个数都尝试放入就行。要想实现前面的位置选择的数后面的位置不能在选择。,使用一个bool数组进行去重就行。经过1 2 的逻辑分析之后接下来就是递归回溯的基本套路实现就行。递归的终止条件为所有位置都已填充数。使用下面代码的时间复杂度为O(n * n!)cclass Solution { public: void dfs(vectorint nums, vectorint path, vectorvectorint res, vectorbool visited) { int n nums.size(); // 全部数字已放入 if (path.size() n) { res.push_back(path); return ; } for (int i 0; i n; i) { // 已被之前位置选择 if (visited[i]) { continue; } // 递归回溯 path.push_back(nums[i]); visited[i] true; dfs(nums, path, res, visited); visited[i] false; path.pop_back(); } } vectorvectorint permute(vectorint nums) { int n nums.size(); vectorvectorint res; vectorbool visited(n, false); vectorint path; dfs(nums, path, res, visited); return res; } };JAVAimport java.util.*; class Solution { // DFS 生成全排列 private void dfs(int[] nums, ListInteger path, boolean[] visited, ListListInteger res) { int n nums.length; // 所有数字都已放入路径 if (path.size() n) { res.add(new ArrayList(path)); return; } for (int i 0; i n; i) { // 已被之前位置选择 if (visited[i]) { continue; } visited[i] true; path.add(nums[i]); dfs(nums, path, visited, res); // 回溯 path.remove(path.size() - 1); visited[i] false; } } public ListListInteger permute(int[] nums) { int n nums.length; ListListInteger res new ArrayList(); boolean[] visited new boolean[n]; ListInteger path new ArrayList(); dfs(nums, path, visited, res); return res; } }PythonfromtypingimportListclassSolution:defpermute(self,nums:List[int])-List[List[int]]:res[]nlen(nums)visited[False]*n# DFS 生成全排列defdfs(path):# 所有数字都已放入路径iflen(path)n:res.append(path[:])returnforiinrange(n):# 已被之前位置选择ifvisited[i]:continuevisited[i]Truepath.append(nums[i])dfs(path)# 回溯path.pop()visited[i]Falsedfs([])returnresJavaScriptvarpermutefunction(nums){constnnums.length;constres[];constvisitednewArray(n).fill(false);constpath[];// DFS 生成全排列functiondfs(){// 所有数字都已放入路径if(path.lengthn){res.push([...path]);return;}for(leti0;in;i){// 已被之前位置选择if(visited[i])continue;visited[i]true;path.push(nums[i]);dfs();// 回溯path.pop();visited[i]false;}}dfs();returnres;};Gofuncpermute(nums[]int)[][]int{n:len(nums)res:make([][]int,0)visited:make([]bool,n)path:make([]int,0,n)// DFS 生成全排列vardfsfunc()dfsfunc(){// 所有数字都已放入路径iflen(path)n{tmp:make([]int,n)copy(tmp,path)resappend(res,tmp)return}fori:0;in;i{// 已被之前位置选择ifvisited[i]{continue}visited[i]truepathappend(path,nums[i])dfs()// 回溯pathpath[:len(path)-1]visited[i]false}}dfs()returnres}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询