leetcode做题笔记47
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
思路一:回溯
int* Source = NULL;
int Source_Size = 0;int** Result = NULL;
int* Retcolsizes = NULL;
int Result_Index = 0;int* Path = NULL;
int Path_Index = 0;bool* Used = NULL;//将回溯时用到的变量全部设置为全局变量,实现零传参,更加简洁;int cmp(const void* a, const void* b){return *(int*)a - *(int*)b;
}//C语言中排序函数qsort()用到的回调比较函数;void Back_Track(){if(Path_Index == Source_Size){int* temi = (int*)malloc(sizeof(int) * Path_Index);memcpy(temi, Path, sizeof(int) * Path_Index);Result[Result_Index] = temi;Retcolsizes[Result_Index] = Path_Index;Result_Index++;return;}//递推终止条件:原数组中的所有元素均已被使用;for(int i = 0; i < Source_Size; i++){if(i && Source[i] == Source[i - 1] && !Used[i - 1]){continue;}if(Used[i]){continue;}
//这两个剪枝条件使得对于排序后数组中的某一个连续的相同数字序列,每层的递推操作都只能选择连续相同数字序列的最左边的未被使用的第一个数字;Path[Path_Index] = Source[i];Path_Index++;Used[i] = true;Back_Track();Used[i] = false;Path_Index--;//正常的递推与回溯操作;}
}int** permuteUnique(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){Source = nums;Source_Size = numsSize;Result = (int**)malloc(sizeof(int*) * 630);Retcolsizes = (int*)malloc(sizeof(int) * 630);Result_Index = 0;Path = (int*)malloc(sizeof(int) * numsSize);Path_Index = 0;Used = (bool*)malloc(sizeof(bool) * numsSize);for(int i = 0; i < numsSize; i++){Used[i] = false;}//全局变量初始化;qsort(nums, numsSize, sizeof(int), cmp);//对数组进行排序;Back_Track();*returnSize = Result_Index;*returnColumnSizes = Retcolsizes;return Result;//各返回值参数处理;
}
分析:
本题要求返回所有不重复的序列,想到可使用动态规划和回溯的方法进行作答。首先将结果和原来的数组用另一个数组来表示,遍历将不重复的序列放入结果数组中,同时将使用过的数放入used数组中,每次遍历的时候判断是否遇到重复数,若为重复数则跳过他们。遍历完后返回结果数组。
总结:
本题主要考察了动态规划和回溯问题的解决,对此问题要创建路径数组,结果数组等,判断是否由重复的数组,最后再输出不重复的数组
相关文章:
leetcode做题笔记47
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 思路一:回溯 int* Source NULL; int Source_Size 0;int** Result NULL; int* Retcolsizes NULL; int Result_Index 0;int* Path NULL; int Path_Index 0;bool* Used …...
Linux Day04
目录 一、文件压缩与解压命令 1.1 tar cvf 文件名 ---打包命令生成.tar 1.2 tar xvf 文件名 ----解开包 生成文件 1.3 gzip .tar 压缩 生成.tar.gz压缩包 1.4 gzip -d .tar.gz 解压成包 1.5 直接把压缩包解压成文件 tar zxf .tar.gz 二、Linux 系统上 C 程序的…...
上海亚商投顾:沪指冲高回落 两市成交重回万亿
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日冲高回落,盘初一度集体涨超1%,随后涨幅明显回落,上证50午后一度翻…...
2023最新版本~十分钟零基础搭建EMQX服务器
购买服务器 已知服务器大厂商 1 阿里云 点击直接访问 2 华为云点击直接访问 3 腾讯云 点击直接访问 还是比较推荐大公司 不会跑路 这里我购买的是一年的华为云服务器(新用户 64一年) 镜像推荐乌班图18 登陆服务器(需要重置密码!!&…...
SpringBoot2.5.6整合Elasticsearch7.12.1
SpringBoot2.5.6整合Elasticsearch7.12.1 下面将通过SpringBoot整合Elasticseach,SpringBoot的版本是2.5.6,Elasticsearch的版本是7.12.1。 SpringBoot整合Elasticsearch主要有三种方式,一种是通过elasticsearch-rest-high-level-client&am…...
准大一信息安全/网络空间安全专业学习规划
如何规划? 学习需要一个良好的学习习惯,建议刚开始一定要精通一项程序语言,学习其他的就会一通百通。过程中是按步骤学习,绝不半途看见苹果丢了梨,一定要强迫自己抵制新鲜技术的诱惑。 网络安全其实是个广而深的领域…...
WEB:php_rce
背景知识 Linux命令 thinkPHPv5漏洞 题目 打开页面,页面显示为thinkphp v5的界面,可以判断框架为thinkPHP,可以去网上查找相关的漏洞 由题目可知,php rec是一个通过远程代码执行漏洞来攻击php程序的一种方式 因为不知道是php版…...
问题:idea启动项目错误提示【command line is too long. shorten command line】
问题:idea启动项目错误提示【command line is too long. shorten command line】 参考博客 问题描述 启动参数过长,启动项目,错误提示 原因分析 出现此问题的直接原因是:IDEA集成开发环境运行你的“源码”的时候(…...
xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04
xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04 一、安装linux子系统 1.1、 启动或关闭Windows功能-适用于Linux的Windows子系统 1.2 WSL 官方文档 使用 WSL 在 Windows 上安装 Linux //1-安装 WSL 命令 wsl --install//2-检查正在运行的 WSL 版本:…...
子域名收集工具OneForAll的安装与使用-Win
子域名收集工具OneForAll的安装与使用-Win OneForAll是一款功能强大的子域名收集工具 GitHub地址:https://github.com/shmilylty/OneForAll Gitee地址:https://gitee.com/shmilylty/OneForAll 安装 1、python环境准备 OneForAll基于Python 3.6.0开发和…...
报数游戏、
描述 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。。 输入 初始人数n 输出 最后一人的初始编号 输入样例 1 3 输出样例 1 2 输入样例 …...
规约模式:优雅设计与灵活应用
引言: 规约模式是软件开发中的重要设计原则,它们提供了一种优雅的、灵活的方式来构建高质量的系统。本文将通过实例演示规约模式的具体应用,带你了解这些原则的实战价值。 一、开放封闭原则 // 图形接口 public interface Shape {void dra…...
Ubuntu Server版 之 apache系列 安装、重启、开启,版本查看
安装之前首先要检测是否安装过 apt list --installed | grep tool tool:要检测的名称,如mysql、apache 、ngnix 等 安装 apache sudo apt install apache2 安装apache 默认是开启的 可以通过浏览器 检测一下 service apache stop # apache 停止服务…...
Redis学习路线(4)—— Redis实现项目缓存
一、什么是缓存 (一)概念:缓存就是数据交换的缓冲区(称为Cache),是存储数据的临时区域,一般读写性能较高。 (二)常见缓存: 浏览器缓存,服务器缓…...
【Unity造轮子】实现一个类csgo的武器轮盘功能
文章目录 前言素材导入开始1.放背景和中间的圆圈,调整合适的宽高和位置2.添加选择图像框3.添加一些武器道具选择4.书写脚本RadialMenuManager5.绑定脚本和对象6.运行效果,按tab键开启关闭轮盘7.优化添加显示选中的武器文本8.添加鼠标选中放大的效果9.添加…...
代码随想录算法训练营第三十天 | 单调栈系列复习
单调栈系列复习 每日温度未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素 I未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素II未看解答自己编写的青春版重点题解的代码日后再次复习重新写 接雨水未看解答自己编写的青春版…...
redis数据未到过期时间被删除
1. 问题描述 使用了jeecgboot开发后端代码,代码设置的redis过期时间为24小时,部署使用的宝塔面板,在redis中看到的过期时间也是为24小时,但是并未到过期时间,数据就被删除。 2. 解决办法 观察了一下redis中的数据&a…...
32.选择器
选择器 html部分 <div class"toggle-container"><input type"checkbox" id"good" class"toggle"><label for"good" class"label"><div class"ball"></div></label&…...
Linux--验证命令行上运行的程序的父进程是bash
1.输入以下代码: #include <stdio.h> #include <unistd.h> int main() {printf("hello world: pid: %d, ppid: %d\n",getpid(),getppid());return 0; }2.编译得到可执行程序 3.运行得到ppid 4.输入指令 ps axj | head -1 &&am…...
MySQL数据库关于表的一系列操作
MySQL中的数据类型 varchar 动态字符串类型(最长255位),可以根据实际长度来动态分配空间,例如:varchar(100) char 定长字符串(最长255位),存储空间是固定的,例如&#…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
