当前位置: 首页 > news >正文

力扣46:全排列

力扣46:全排列

  • 题目
  • 思路
  • 代码

题目

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

思路

看到所有可能首先想到的就是回溯。
回溯的结束条件也很好写,用数组的长度来判断即可。这道题的难点主要是如何进行判断这个位置我们已经使用过了,和我们之前的回溯不同之前的回溯可能每个位置是一个字符串或者数组所以我们可以使用下标来控制,这道题我们每个位置都只是一个数字所以我们得另想办法。其实也很简单我们用一个存储着bool类型的数组不就可以了如果这个位置已经插入了我们就把对应下标设为true如果没插入就是flase。思路有了代码就很简单了。

代码

class Solution {
public:void BackCall(vector<vector<int>>& res,vector<int>& nums,vector<bool>& v,vector<int> tmp){if(tmp.size() == nums.size()){res.push_back(tmp);return;}for(int i = 0; i <nums.size();i++){if(v[i] == true){continue;}v[i] = true;tmp.push_back(nums[i]);BackCall(res,nums,v,tmp);tmp.pop_back();v[i] = false;}}vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> res;vector<int> tmp;//使用索引和bool类型来判断此位置是否已经使用过了vector<bool> v(nums.size(),false);//回溯BackCall(res,nums,v,tmp);return res;}
};
http://www.dtcms.com/a/307332.html

相关文章:

  • k8s-master03加入集群失败解决方法之一
  • Table-Render:基于 JSON Schema 的高性能 React 动态表格渲染器
  • 【达梦MPP(不带主备)集群搭建】
  • 【Linux我做主】进程优先级
  • Linux的库制作与原理
  • e签宝CEO金宏洲受邀出席WAIC世界人工智能大会
  • 对比学习:原理演进、技术突破与跨领域应用全景
  • 【Java23种设计模式】:模板方法模式
  • Java设计模式之《命令模式》
  • SQL理解——INNER JOIN
  • 机器人行业工商注册企业基本信息数据(1958-2023年)
  • MySQL转PostgreSQL迁移实战:从语法错误到完美兼容
  • AWS云安全审计终极实战指南:构建自动化安全防线
  • Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数
  • Sort Merge Join为什么是Spark中最优的join
  • C语言指针(三):数组传参本质、冒泡排序与二级指针详解
  • C++异常处理的成本:理解与优化
  • 超宽带测距+测角+无线通信一体化模组:智能门锁、智能遥控器、AR头戴、智能穿戴
  • yolo目标检测基础知识
  • AWS高级解决方案架构师黄海波:GenAI 时代非结构化数据处理的实践与趋势洞察
  • 【最近公共祖先】ST表法
  • 从渠道渗透到圈层渗透:开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新路径研究
  • 联通元景万悟 开源,抢先体验!!!
  • 技术速递|GitHub Copilot for Eclipse 迈出重要一步
  • SpringAI:AI工程应用框架新选择
  • 转码刷 LeetCode 笔记[1]:3.无重复字符的最长子串(python)
  • 一对一交友小程序 / APP 系统架构分析
  • n8n为什么建议在数组的每个item中添加json键?
  • python的异步、并发开发
  • 聊下多线程查询数据库