算法 全排列问题-(递归回溯)

牛客网: BM56

有重复项数字全排列,解题思路:

数字全排列,从0位置开始遍历数字作为排列项的第一位,记录此位置已经遍历,递归进入下一层,再从0位置开始遍历作为排列项第二位,如果是已记录的位置,直接忽略遍历下一个位置。

对于有重复项,需遍历处理前排好序,递归遍历下一个位置时,如果当前位置和上一次位置值相同,说明有重复项,同时上一位置的遍历状态记录已被清除,说明已经在排列项的相同位置处理过同样的元素,故忽略。

其他情况均将当前位置元素添加进排列项中,直到排列项长度满足要求直接返回,并回溯遍历下一位置,直到所有位置均参与递归回溯遍历结束。

代码:

// gopackage mainimport ("sort"
)/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param num int整型一维数组* @return int整型二维数组*/
var res = [][]int{}func calc(num, tmp, vis []int) {if (len(tmp) == len(num)) {tmp1 := make([]int, len(tmp))copy(tmp1, tmp)res = append(res, tmp1)return}for i := 0; i < len(num); i++ {if vis[i] == 1 {continue}if i > 0 && num[i] == num[i-1] && vis[i-1] == 0 {continue}tmp = append(tmp, num[i])vis[i] = 1calc(num, tmp, vis)tmp = tmp[:len(tmp)-1]vis[i] = 0}
}func permuteUnique( num []int ) [][]int {// write code hereif len(num) == 0 {return [][]int{}}tmp := []int{}vis := make([]int, len(num))sort.Ints(num)calc(num, tmp, vis)return res
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode01

LeetCode01 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和 为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你…

【二分法查找】

使用二分法查找需要注意的点&#xff1a; 使用二分法的前提&#xff1a; 数组为有序数组&#xff0c;同时题目还强调数组中无重复元素。 二分法经常写乱&#xff0c;主要是因为对区间的定义没有想清楚&#xff0c;区间的定义就是不变量。要在二分查找的过程中&#xff0c;保持…

Lua多脚本执行

--全局变量 a 1 b "123"for i 1,2 doc "Holens" endprint(c) print("*************************************1")--本地变量&#xff08;局部变量&#xff09; for i 1,2 dolocal d "Holens2"print(d) end print(d)function F1( ..…

Java中的IO流的缓冲流

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 &#x1f334;IO流体系结构&#x1f334;缓冲流1.提高效率的原理2.缓冲流的类型3.字符缓冲流两个特有方法 &#x1f334;总结 &#x1f334;IO流体系…

springcloudgateway Actuator API

官方文档&#xff1a;11. Actuator API 开启actuator 加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 加配置 management:endpoints:web:expos…

git学习使用

git使用 1、cmd #查看版本 git version2、初识 Git GUI: Git提供的图形界面工具 Git Bash: Git提供的命令行工具 1.打开Git Bash2.设置自己的用户名和邮箱地址git config --global user.name "xxx"git config --global user.email "123456789163.com"查…

基于jenkins+k8s实现devops

1、背景 由于jenkins运行在k8s上能够更好的利用动态agent进行构建。所以写了个部署教程&#xff0c;亲测无坑 2、部署 1、创建ns kubectl create namespace devops 2、kubectl apply -f jenkins.yml apiVersion: v1 kind: ServiceAccount metadata:name: jenkinsnamespace…

OpenHarmony应用程序包整体说明

用户应用程序泛指运行在设备的操作系统之上&#xff0c;为用户提供特定服务的程序&#xff0c;简称“应用”。一个应用所对应的软件包文件&#xff0c;称为“应用程序包”。 OpenHarmony提供了应用程序包开发、安装、查询、更新、卸载的管理机制&#xff0c;方便开发者开发和管…

Vue安装插件时候中遇到冲突依赖解决方案

错误如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm ERR! node_modules/eslint-plugin-vue npm ERR! dev eslint-pl…

word中给公式加序号的方法

①首先&#xff0c;用word插入一个公式 然后呢&#xff0c;在公式后面敲上这个公式在整篇文章中的序号。我的这个公式在整篇文章中是第三号&#xff0c;所以就敲上(3),如下图所示&#xff1a; 然后&#xff0c;在公式和序号之间&#xff0c;按住shift3(#) 切忌&#xff0c;…

UNITY—2D游戏制作入门!

Unity作为当今最流行的游戏引擎之一&#xff0c;受到各大厂商的喜爱。 像是炉石传说&#xff0c;以及逃离塔克夫&#xff0c;都是由unity引擎开发制作。 作为初学者的我们&#xff0c;虽然无法直接做出完成度那么高的作品&#xff0c;但每一个伟大的目标&#xff0c;都有一个…

MySQL数据库的索引和事务

目录 一、索引 1.1Mysql索引 1.2索引的作用 1.3 创建索引的依据 1.4 普通索引 修改表方式创建索引 删除索引 1.5 唯一索引 修改表方式创建 删除索引 1.6 主键索引 修改表方式创建 1.7 组合索引 1.8 全文索引 1.9查看索引 二、事务 2.1事务概念 2.2事务的ACID特…

软件测试一些常见的误区

摘要 随着市场对软件质量的不断提高&#xff0c;软件测试不断受到重视&#xff0c;但是由于总体上&#xff0c;国内软件项目过程不规范&#xff0c;导致重视编码和轻视测试的现象&#xff0c;对于软件测试的重要性、测试方法和流程等还存在很多错误的认识。根据作者的软件工作…

绘制lidar点云pose

输入点云序列&#xff0c;得到点云的运动轨迹&#xff0c;并生成周围点云拼接得到的点云地图 #include <rclcpp/rclcpp.hpp> #include <sensor_msgs/msg/point_cloud2.hpp> #include <geometry_msgs/msg/transform_stamped.hpp> #include <pcl/point_clo…

(数组/字符串) 380. O(1) 时间插入、删除和获取随机元素 ——【Leetcode每日一题】

❓ 380. O(1) 时间插入、删除和获取随机元素 难度&#xff1a;中等 实现 RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#x…

Fortran IMSL库申请学生许可安装

最近使用IMSL想求个定积分&#xff0c;发现之前用的imsl7.0不支持&#xff0c;会说明许可证已经过期&#xff0c;不得不自己申请一个许可。 首先是之前的blog&#xff1a;VS2022 Fortran 配置IMSL库 这次自己申请了一个学生许可证&#xff0c;大致需要学校邮箱&#xff0c;学…

YUM 升级 PHP7

文章目录 YUM 升级 PHP71. 查看当前 PHP 信息2. YUM 安装 PHP73. 查看 PHP 版本4. 启动PHP-FPM YUM 升级 PHP7 参考地址&#xff1a;网站地址 参考地址&#xff1a;网站地址 1. 查看当前 PHP 信息 # 查看 PHP 版本信息 php -v# 查看 yum 源中 PHP 信息 yum list | grep php2. …

(c语言)数组的排序插入和删除

#include<stdio.h> void PaiXu(int arr[11]) //排序 { int i, j 0; for (i 0; i < 10; i) { for (j 0; j < 10 - i-1; j) { if (arr[j] > arr[j 1]) { int t arr[j]; …

python经典百题之static定义静态变量的方法

题目: 学习 static 定义静态变量 程序分析 在Python中&#xff0c;“static”&#xff08;静态变量&#xff09;的概念通常与类的属性相关联。虽然Python没有严格的静态变量概念&#xff0c;但可以通过类属性或模块级变量来模拟静态变量的功能。我们将探讨三种不同的方法来模…

Kafka-UI

有多款kafka管理应用&#xff0c;目前选择的是github上star最多的UI for Apache Kafka。 关于 To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself. UI for Apache Kafka is a versatile, fast, and lightweight…