当前位置: 首页 > 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.lryc.cn/news/605576.html

相关文章:

  • 数据库学习------数据库隔离类型及其与事务特性
  • web应用从服务器主动推动数据到客户端的方式
  • 【运维基础】Linux 进程调度管理
  • 函数在头文件声明函数,为啥要加extern关键字?
  • c++:模板的应用
  • 在幸狐RV1106板子上用gcc14.2本地编译安装samba-4.22.3服务器,并且支持XP系统访问共享文件夹
  • js防抖、节流和扁平化实现
  • UI测试平台TestComplete如何实现从Git到Jenkins的持续测试
  • 零基础构建MCP服务器:TypeScript/Python双语言实战指南
  • 软考中级-信息安全工程师-每日一学(1)
  • Mockito:Java单元测试Mock框架
  • Effective C++ 条款13:以对象管理资源
  • 防火墙安全实验
  • 使用python写一套完整的智能体小程序
  • 推客小程序商业模型设计:合规分佣体系×盈利模式×LTV提升策略
  • FFmpegHandler 功能解析,C语言程序化设计与C++面向对象设计的核心差异
  • 打车小程序 app 系统架构分析
  • Mac 系统下安装 nvm
  • 旧物重生,交易有温度——旧物回收二手交易小程序,让生活更美好
  • 直播小程序 app 系统架构分析
  • 相亲小程序安全与隐私系统模块搭建
  • 计算机网络:什么是光猫
  • C语言与C++、Java、Python等主流编程语言存在显著差异
  • 医保购药APP源码开发新趋势:对接电子处方与互联网医院
  • SpringMVC核心原理与实战指南
  • 汇编语言中的溢出(Overflow)与下溢(Underflow)
  • TransportClient详细说一说
  • 【CanMV K230】通解教程
  • Java高级用法之回调函数
  • Odoo:免费开源的医疗器械行业解决方案