力扣日记2.21-【回溯算法篇】46. 全排列
力扣日记:【回溯算法篇】46. 全排列
日期:2023.2.21
参考:代码随想录、力扣
46. 全排列
题目描述
难度:中等
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]
示例 3:
输入:nums = [1]
输出:[[1]]
提示:
- 1 <= nums.length <= 6
- -10 <= nums[i] <= 10
- nums 中的所有整数 互不相同
题解
cpp ver
class Solution {
public:vector<int> path;vector<vector<int>> result;int used[21] = {0}; // 记录哪些值取过vector<vector<int>> permute(vector<int>& nums) {backtracking(nums);return result;}void backtracking(vector<int>& nums) {// 终止条件if (path.size() == nums.size()) {result.push_back(path);return;}// for 横向遍历for (int i = 0; i < nums.size(); i++) {// 需要标记哪些值已经取过了, nums[i] [-10, 10] -> [0, 20] if (used[nums[i] + 10] == 1) continue; // 取过了,则跳过该值// 否则,标记取过,并进行取值与递归used[nums[i] + 10] = 1;path.push_back(nums[i]);backtracking(nums);path.pop_back();used[nums[i] + 10] = 0;}}
};
复杂度
时间复杂度: O(n!)
空间复杂度: O(n)
第一个取值有n个选择,第二个有(n-1)个选择(除去第一个),以此类推,总共 n*(n-1)*…*1=n!种情况
思路总结
- 全排列本质上也是组合问题,其特点是:
- 全:要求需要取到集合所有值才行(到了叶子节点才能放入result)
- 排列:则说明相同值但不同排序得到的组合是不同,这样则要求,在每次for循环时都需要从最前面开始遍历(不需要之前组合和子集问题的
startindex),但这样需要考虑避免在纵向递归取到重复的值,即要做到在for循环遍历时,只有未取过的值才进行取值遍历。
- 关键是通过一个
used数组(哈希表)记录取过的值,即在for循环每次取值前,判断当前值在used中是否为1,如果为1说明取过,则跳过,否则进行取值遍历和回溯。且每次取值后在used记录该值已取(对应地,要在回溯时置0)。 - 树状结构示意图(from代码随想录)
- 注:
used也可以用以下表示:vector<bool> used(nums.size(), false); // 每次for循环取值后 used[i] == true; // i 为for循环索引(与nums[i]同)
相关文章:
力扣日记2.21-【回溯算法篇】46. 全排列
力扣日记:【回溯算法篇】46. 全排列 日期:2023.2.21 参考:代码随想录、力扣 46. 全排列 题目描述 难度:中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&…...
[AIGC] Kafka 消费者的实现原理
在 Kafka 中,消费者通过订阅主题来消费数据。每个消费者都属于一个消费者组,消费者组中的多个消费者可以共同消费一个主题,实现分布式消费。每个消费者都会维护自己的偏移量,用于记录已经读取到的消息位置。消费者可以选择手动提交…...
Dubbo框架admin搭建
Dubbo服务监控平台,dubbo-admin是图形化的服务管理界面,从服务注册中心获取所有的提供者和消费者的配置。 dubbo-admin是前后端分离的项目,前端使用Vue,后端使用springboot。因此,前端需要nodejs环境,后端需…...
Linux 内存top命令详解
通过top命令可以监控当前机器的内存实时使用情况,该命令的参数解释如下: 第一行 15:30:14 —— 当前系统时间 up 1167 days, 5:02 —— 系统已经运行的时长,格式为时:分 1 users ——当前有1个用户登录系统 load average: 0.00, 0.01, 0.05…...
OCP使用CLI创建和构建应用
文章目录 环境登录创建project赋予查看权限部署第一个image创建route检查pod扩展应用 部署一个Python应用连接数据库创建secret加载数据并显示国家公园地图 清理参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 登录 通过 crc console --credentials 可以查看登录信息&…...
Chrome关闭时出现弹窗runtime error c++R6052,且无法关闭
环境: Chrome 版本121 Win10专业版 问题描述: Chrome关闭时出现弹窗runtime error cR6052,且无法关闭 解决方案: 1.任务管理器打开,强制结束进程 2.再次打开谷歌浏览器,打开设置关于Chrome࿰…...
【动态规划专栏】专题二:路径问题--------6.地下城游戏
本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…...
flink operator 1.7 更换日志框架log4j 到logback
更换日志框架 flink 1.18 1 消除基础flink框架log4j 添加logback jar 1-1 log4j log4j-1.2-api-2.17.1.jar log4j-api-2.17.1.jar log4j-core-2.17.1.jar log4j-slf4j-impl-2.17.1.jar 1-2 logback logback-core-1.2.3.jar logback-classic-1.2.3.jar slf4j-api-1.7.25.jar2 …...
算法项目(1)—— LSTM+CNN+四种注意力对比的股票预测
本文包含什么? 项目运行的方式(包教会)项目代码(在线运行免环境配置)不通注意力的模型指标对比一些效果图运行有问题? csdn上后台随时售后.项目说明 本项目实现了基于CNN+LSTM构建模型,然后对比不同的注意力机制预测股票走势的效果。首先看一下模型结果的对比: 模型MS…...
Qt C++春晚刘谦魔术约瑟夫环问题的模拟程序
什么是约瑟夫环问题? 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N6,M5,被杀掉的顺序是:5ÿ…...
Typora+PicGO+腾讯云COS做图床
文章目录 Typora+PicGO+腾讯云COS做图床一、为什么使用图床二、Typora、PicGO和腾讯云COS介绍三、下载Typora和PicGOTyporaPicGO 四、配置Typora、PicGO和腾讯云COS腾讯云COS配置PicGO配置Typora配置 Typora+PicGO+腾讯云COS做图床…...
WebStorm | 如何修改webstorm中新建html文件默认生成模板中title的初始值
在近期的JS的学习中,使用webstorm,总是要先新建一个html文件,然后再到里面书写<script>标签,真是麻烦,而且标题也是默认的title,想改成文件名还总是需要手动去改 经过小小的研究,找到了修…...
大厂的数据质量中心系统设计
日常工作中,数据开发上线完一个任务后并不是就可以高枕无忧,时常因上游链路数据异常或者自身处理逻辑的 BUG 导致产出的数据结果不可信。而问题发现可经历较长周期(尤其离线场景),往往是业务方通过上层数据报表发现数据…...
docker (一)-简介
1.什么是docker Docker 是一个开源的应用容器引擎,由于docker影响巨大,今天也用"Docker" 指代容器化技术。 2.docker的优势 一键部署,开箱即用 容器使用基于image镜像的部署模式,image中包含了运行应用程序所需的一…...
全国乙卷高考理科数学近年真题的选择题练一练和解析
虽然很多中小学才陆陆续续开学,但是高三的学子们一定是过年的时候也在抓紧备考,毕竟,距离2024年高考只剩下不到四个月了。 如何在最后四个月的时间提高成绩?以高考真题为抓手是一个不错的方法,因为真题都是严格遵循考试…...
uniapp运动课程健身打卡系统微信小程序
考虑到实际生活中在我来运动管理方面的需要以及对该系统认真的分析,将系统分为小程序端模块和后台管理员模块,权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、课程类别管理…...
IP详细地理位置查询:技术原理与应用实践
IP地址是互联网上设备的唯一标识,在网络安全、个性化服务等领域具有重要意义。通过IP详细地理位置查询,可以获取到IP地址所在地的具体信息,为网络管理、定位服务等提供支持。IP数据云将深入探讨IP详细地理位置查询的技术原理、应用实践以及相…...
SpringBoot2整合支付宝进行沙箱支付
目录 1. 进入支付宝的开放平台 2. 导入Maven依赖 3. 配置application.yml文件 NATAPP.cn(内网穿透工具) 注册登录 下载 4. 后端配置 5. 测试 1. 进入支付宝的开放平台 开发平台: 支付宝开放平台 登录后,点击控制台 点击最下面的沙箱 2. 导入Maven依赖 <dependency…...
世界顶级名校计算机专业,都在用哪些书当教材?
清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 欢迎来到英杰社区: https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区: https://bbs.csdn.net/topics/617897397 &…...
Linux内核解读
来自鹅厂架构师 作者:aurelianliu 工作过程中遇到的调度、内存、文件、网络等可以参考。 1.os运行态 X86架构,用户态运行在ring3,内核态运行在ring0,两个特权等级。 (1)内核、一些特权指令,例…...
别再搞混了!Docker部署Redis Stack时,选redis/redis-stack还是redis/redis-stack-server?
Redis Stack镜像选择指南:开发与生产环境的最佳实践 在容器化技术普及的今天,Docker已成为部署Redis Stack的首选方案。但面对官方提供的两个相似镜像——redis/redis-stack和redis/redis-stack-server,许多开发者常陷入选择困境。本文将深入…...
为什么你的Ubuntu实时内核编译失败了?PREEMPT_RT补丁的5个关键配置解析
为什么你的Ubuntu实时内核编译失败了?PREEMPT_RT补丁的5个关键配置解析 在工业自动化、机器人控制和金融交易等对延迟敏感的领域,毫秒级的响应差异可能直接影响系统可靠性。许多开发者选择Ubuntu搭配PREEMPT_RT补丁构建实时系统,却在编译阶段…...
快手无水印下载深度解析:从技术原理到商业应用的完整方案
快手无水印下载深度解析:从技术原理到商业应用的完整方案 【免费下载链接】KS-Downloader 快手(KuaiShou)视频/图片下载工具;数据采集工具 项目地址: https://gitcode.com/gh_mirrors/ks/KS-Downloader 在短视频内容管理日…...
VisualCppRedist AIO:解决Windows运行库管理难题的一站式方案
VisualCppRedist AIO:解决Windows运行库管理难题的一站式方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 一、直面运行库困境:三大场…...
保姆级教程:手把手教你下载SEED-VIG脑电数据集(附Gitee国内镜像地址)
从零到一:SEED-VIG脑电数据集的完整获取与解析指南 第一次接触SEED-VIG数据集时,我花了整整三天时间才搞明白如何正确下载和解析这个2.9GB的庞然大物。作为研究驾驶疲劳检测的重要资源,这个数据集的价值毋庸置疑,但获取过程却让不…...
HoRain云--RESTful API设计全指南
🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...
FGA智能自动化:重新定义Fate/Grand Order效率提升新范式
FGA智能自动化:重新定义Fate/Grand Order效率提升新范式 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA 在Fate/Grand Order的游戏世界中,90%的玩家每天都在重复着机械的刷本操作&…...
抖音内容下载技术方案:多策略架构与智能下载引擎实现
抖音内容下载技术方案:多策略架构与智能下载引擎实现 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告 想象一下这个场景:你的团队刚刚完成了一轮大规模的语音识别系统测试,收集了上千小时的音频数据。接下来,你需要从海量的识别结果中,找出哪些词识别错了&…...
《镜像视界|低空空间智能白皮书》——融合 Pixel2Geo™ 像素空间反演 × MatrixFusion™ 矩阵视频融合 × NeuroRebuild™ 动态三维重构 × 跨镜连续追踪 ×
——融合 Pixel2Geo™ 像素空间反演 MatrixFusion™ 矩阵视频融合 NeuroRebuild™ 动态三维重构 跨镜连续追踪 轨迹张量建模 Cognize-Agent 空间智能系统的空地一体感知与目标连续管控体系摘要低空经济与立体城市快速发展,催生了对“空地一体、连续感知、实时决…...
