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

典型回溯题目 - 全排列(一、二)

典型回溯题目 - 全排列(一、二)

46. 全排列

题目链接:46. 全排列状
题目大意:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

注意:(1)1 <= nums.length <= 6;(2)-10 <= nums[i] <= 10;(3)nums 中的所有整数 互不相同

提示:LC的灵佬的视频题解非常好,下面的图片截取自对应视频。
在这里插入图片描述

示例:

输入: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]]

参考代码:

class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# return list(set(itertools.permutations(nums, len(nums))))def dfs(i):if i==n:ans.append(path.copy())return for j in range(n):if not on_path[j]:path[i] = nums[j]on_path[j] = Truedfs(i+1)on_path[j] = Falsen = len(nums)ans = []path = [0]*non_path = [False]*ndfs(0)return ans
  • 时间复杂度:O(n×n!)O(n \times n!)O(n×n!),其中 n 为数组 nums 的长度,该推论可见灵佬的视频。
  • 空间复杂度:O(n)O(n)O(n)

47. 全排列 II

题目链接:47. 全排列 II
题目大意:
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

注意:(1)1 <= nums.length <= 8;(2)-10 <= nums[i] <= 10。

提示:在全排列的基础上进行条件束缚,进行去重操作。

示例:

输入:nums = [1,1,2]
输出:
[[1,1,2],[1,2,1],[2,1,1]]输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

参考代码:

class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:# return list(set(itertools.permutations(nums, len(nums))))nums.sort()  def dfs(i):if i==n:ans.append(path.copy())return for j in range(n):if not on_path[j]:if j>0 and nums[j]==nums[j-1] and not on_path[j-1]:continuepath[i] = nums[j]on_path[j] = Truedfs(i+1)on_path[j] = Falsen = len(nums)ans = []path = [0]*non_path = [False]*ndfs(0)return ans
  • 时间复杂度:O(n×n!)O(n \times n!)O(n×n!),其中 n 为数组 nums 的长度。
  • 空间复杂度:O(n)O(n)O(n)

小结

这两道题是非常经典的回溯问题,很值得反复学习记忆。

相关文章:

典型回溯题目 - 全排列(一、二)

典型回溯题目 - 全排列&#xff08;一、二&#xff09; 46. 全排列 题目链接&#xff1a;46. 全排列状 题目大意&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 注意&#xff1a;&#xff08;1&#xf…...

数据清洗和特征选择

数据清洗和特征选择 数据清洗和特征挖掘的工作是在灰色框中框出的部分&#xff0c;即“数据清洗>特征&#xff0c;标注数据生成>模型学习>模型应用”中的前两个步骤。 灰色框中蓝色箭头对应的是离线处理部分。主要工作是 从原始数据&#xff0c;如文本、图像或者应…...

java StringBuilder 和 StringBuffer 万字详解(深度讲解)

StringBuffer类介绍和溯源StringBuffer类常用构造器和常用方法StringBuffer类 VS String类&#xff08;重要&#xff09;二者的本质区别&#xff08;含内存图解&#xff09;二者的相互转化StringBuilder类介绍和溯源StringBuilder类常用构造器和常用方法String类&#xff0c;St…...

【Linux】帮助文档查看方法

目录1 Linux帮助文档查看方法1.1 man1.2 内建命令(help)1 Linux帮助文档查看方法 1.1 man man 是 Linux 提供的一个手册&#xff0c;包含了绝大部分的命令、函数使用说明。 该手册分成很多章节&#xff08;section&#xff09;&#xff0c;使用 man 时可以指定不同的章节来浏…...

UEFI 实战(2) HelloWorld 之一 helloworld及.inf文件

初识UEFI 按惯例&#xff0c;首先让我们用HelloWorld跟UEFI打个招呼吧 标准application /*main.c */ #include <Uefi.h> EFI_STATUS UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { SystemTable -> ConOut-> OutputString(SystemTab…...

向2022年度商界木兰上榜女性致敬!

目录 信息来源&#xff1a; 2022年度商界木兰名单 简介 评选标准 动态 榜单 为你心中的2023商界女神投上一票 信息来源&#xff1a; 2022年度商界木兰榜公布 华为孟晚舟获商界木兰最高分 - 脉脉 【最具影响力女性】历届商界木兰榜单 中国最具影响力的30位商界女性名单…...

ChatGPT助力校招----面试问题分享(二)

1 ChatGPT每日一题&#xff1a;DC-DC与LDO的区别 问题&#xff1a;介绍一下DC-DC与LDO的区别 ChatGPT&#xff1a;DC-DC和LDO都是电源管理电路&#xff0c;它们的主要作用是将输入电压转换为所需的输出电压&#xff0c;以供电子设备使用。但是&#xff0c;它们之间存在一些重…...

JAVA架构与开发(JAVA架构是需要考虑的几个问题)

在企业中JAVA架构师主要负责企业项目技术架构&#xff0c;企业技术战略制定&#xff0c;技术框架搭建&#xff0c;技术培训和技术攻坚的工作。 在JAVA领域&#xff0c;比较多的都是web项目。用于解决企业的数字化转型。对于JAVA架构师而言&#xff0c;平时对项目的架构主要考虑…...

vue 中 v-for 的使用

v-for 获取列表的前 n 条、中间范围、末尾 n 条的数据 list: [{ img: /static/home/news1.png, title: 标题1 },{ img: /static/home/news2.png, title: 标题2 },{ img: /static/home/news1.png, title: 标题3 },{ img: /static/home/news2.png, title: 标题4 },{ img: /stati…...

项目--基于RTSP协议的简易服务器开发(2)

一、项目创立初衷&#xff1a; 由于之前学过计算机网络的相关知识&#xff0c;了解了计算机网络的基本工作原理&#xff0c;对于主流的协议有一定的了解。但对于应用层的协议还知之甚少&#xff0c;因此我去了解了下目前主要的应用层传输协议&#xff0c;发现RTSP&#xff08;…...

ubus编译_环境搭建

文章目录一、环境搭建脚本toolChain_jsonc.cmaketoolChain_libubox.cmaketoolChain_ubus.cmakeinstall.sh二、测试出现问题&#xff1a;三、测试uloopmain.c 每5s打印信息一、环境搭建脚本 准备四个文件 install.sh,toolChain_jsonc.cmake,toolChain_libubox.cmake,toolChai…...

移动通信(16)信号检测

常见的信号检测算法一般包括以下几类检测算法&#xff1a;最优、线性和非线性。最优检测算法&#xff1a;最大似然算法线性检测算法&#xff1a;迫零检测算法和最小均方误差检测算法非线性检测算法&#xff1a;串行干扰消除检测算法球形译码检测算法属于一种次优检测算法&#…...

数据结构与算法之《顺序表》

目录 1.什么是顺序表 顺序表的优势和缺点 顺序表预备知识 顺序表的代码实现 顺序表头部插入 顺序表的销毁 顺序表的头删 顺序表的尾删 顺序表的尾插 顺序表的任意位置插入 顺序表的查找 顺序表的打印 1.什么是顺序表 这篇文章我们来讲一下基础数据结构的顺序表&…...

MySQL索引15连问,抗住!

1. 索引是什么&#xff1f;索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录&#xff0c;可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中&#xff0c;它是占用物理空间的。正所谓水能载舟&#xff0c;也能覆舟。适当的索引能提高查询效率&#x…...

【服务器管理】手动部署LNMP环境(CentOS 8)(非阿里云版本)

简述 如果是你是阿里云的服务器&#xff0c;我推荐你看引用的文章&#xff0c;本文也是参考了很多这篇文章的内容。 https://help.aliyun.com/document_detail/173042.htm 系统版本&#xff1a; CentOS 8 其实CentOS 7的版本可能更好安装一点&#xff0c;但是我有个服务推荐使…...

论文笔记:Positive-incentive Noise

2022 TNNLS 中心思想是&#xff1a;噪声并不一定是有害的 1 CV问题中的噪声 以图像分类为例 对图像加入适量的噪声后再训练&#xff0c;识别准确率反而上升了 再以目标检测为例&#xff1a; 从遥感影像中做飞机检测&#xff0c;一般都是把飞机紧紧框住&#xff0c;然后做…...

340秒语音芯片,轻松实现语音交互,畅享智能生活WTV380语音ic方案

随着智能家居、安防报警、宠物用品 等&#xff0c;智能设备的普及&#xff0c;语音交互技术正在逐渐成为人机交互的主要方式之一。而如何实现稳定高效的语音交互&#xff0c;就需要借助先进的语音芯片技术。今天&#xff0c;我们介绍的是一款高性能的语音芯片——WTV380&#x…...

有java基础学习大数据该如何规划

大数据开发对于Java语言的依赖程度比较高&#xff0c;如果想尝试大数据开发&#xff0c;学习过Java语言就很容易上手 Java是目前使用广泛的编程语言之一&#xff0c;具有的众多特性&#xff0c;特别适合作为大数据应用的开发语言。 目前很多大数据开发团队都在使用Java语言&a…...

【Java基础】HashMap的底层数据结构是怎样的?

HashMap就是以Key-Value的方式进行数据存储的一种数据结构。 HashMap在jdk1.7之前和jdk1.8之后的底层数据结构是不一样的。 在jdk1.7之前是数组链表的形式&#xff0c;并通过entry节点保存key和value值&#xff1b;当Hash冲突比较严重的时候&#xff0c;在数组上形成的链表就会…...

MongoDB5副本集高可用集群部署

MongoDB5副本集高可用集群部署 1.MongoDB简介 MongoDB官方网站&#xff1a;https://www.mongodb.com ​ MongoDB最大的特点是表结构灵活可变&#xff0c;字段类型可以随时修改。MongoDB中的每一行数据只是简单的被转化成Json格式后存储&#xff0c;因此MongoDB中没有MySQL中表…...

Redis持久化:从AOF到RDB,如何实现数据不丢失?

Redis属于内存数据库&#xff0c;但为了防止宕机等导致的数据丢失&#xff0c;也有对应的数据持久化技术。持久化主要作用就是数据备份&#xff0c;即将数据存储在硬盘&#xff0c;保证数据不会因进程退出而丢失。 AOF持久化 Append Only File 类似于Mysql的binlog日志类似&…...

轻量级跨平台桌面应用开发:Tauri零门槛实战指南

轻量级跨平台桌面应用开发&#xff1a;Tauri零门槛实战指南 【免费下载链接】tauri Build smaller, faster, and more secure desktop and mobile applications with a web frontend. 项目地址: https://gitcode.com/GitHub_Trending/ta/tauri 在桌面应用开发领域&#…...

[ linux添加应用图标到桌面 ] : 中将应用程序添加图标(快捷方式 ),并放置任务栏中,.desktop文件使用

.desktop文件格式在你的主目录中打开终端(ctrlaltt)&#xff0c;接着输入以下代码&#xff1a;touch test.desktop vim test.desktop这里我选择的是vim的编辑方式&#xff0c;当然如果你没有vim或者说不太熟练的话&#xff0c;你可以直接双击打开该文件。代码解释&#xff1a;t…...

美国人形机器人发展浅析

美国人形机器人产业正从实验室研发向工业实用化与商业化加速过渡&#xff0c;主要企业&#xff08;波士顿动力、特斯拉、Figure AI等&#xff09;均已推出量产级产品&#xff0c;覆盖工业制造、军事应用等核心场景&#xff0c;技术迭代与规模化部署成为当前行业关键词。一、主要…...

【Python MCP服务器安全开发黄金模板】:20年专家亲授7大零信任实践与3层防御体系

第一章&#xff1a;Python MCP服务器安全开发黄金模板概览Python MCP&#xff08;Model-Controller-Protocol&#xff09;服务器是一种面向协议驱动、可扩展性强的后端服务架构&#xff0c;广泛应用于物联网控制平台与微服务网关场景。本章所介绍的“黄金模板”并非通用框架&am…...

电源管理入门-4子系统reset

之前的文章电源管理入门-1关机重启详解介绍了整机SoC的重启也可以说是reset&#xff0c;那么子系统的reset&#xff0c;例如某个驱动&#xff08;网卡、USB等&#xff09;或者某个子系统&#xff08;NPU、ISP等运行在独立的M核或者R核上的AI系统&#xff09;&#xff0c;这些零…...

保姆级教程:用mintar版imu_utils搞定ZED2/Realsense相机内置IMU标定(避坑kalibr_allan)

保姆级教程&#xff1a;用mintar版imu_utils完成ZED2/Realsense相机IMU标定实战指南 当你在视觉惯性里程计&#xff08;VIO&#xff09;项目中遇到定位漂移问题时&#xff0c;很可能是因为IMU参数配置不当。与网上普遍推荐的kalibr_allan方法不同&#xff0c;本文将带你体验min…...

MT5 Zero-Shot参数详解:Temperature与Top-P对中文改写多样性的影响

MT5 Zero-Shot参数详解&#xff1a;Temperature与Top-P对中文改写多样性的影响 1. 项目概述 MT5 Zero-Shot Chinese Text Augmentation 是一个基于 Streamlit 和阿里达摩院 mT5 模型构建的本地化 NLP 工具。这个工具专门用于中文句子的语义改写和数据增强&#xff0c;能够在保…...

深耕纪实创作 AVG Media 以专业能力赋能纪录片产业发展

在全球内容产业快速迭代的当下&#xff0c;纪录片凭借真实的叙事力量、深厚的人文价值与多元的传播场景&#xff0c;成为内容领域中兼具艺术价值与商业价值的重要载体。国内纪录片行业历经多年发展&#xff0c;形成了多元主体参与、创作方向细分、国际合作深化的行业格局&#…...

Linux性能优化之上下文切换

写在前面 上下文切换因为会导致消耗大量的CPU资源&#xff0c;导致CPU升高&#xff0c;所以上下文切换也是最常见的性能杀手之一。本文就一起来看下这部分内容吧。 1&#xff1a;基础内容介绍 1.1&#xff1a;什么是上下文切换&#xff1f; CPU在执行的时候需要两部分的内容…...