【LeetCode】每日一题 2023_11_11 情侣牵手(并查集/贪心)

文章目录

  • 刷题前唠嗑
  • 题目:情侣牵手
    • 题目描述
    • 代码与解题思路
    • 偷看大佬题解
  • 结语

刷题前唠嗑


LeetCode? 启动!!!

好好好,这么玩是吧,双十一出道情侣牵手

题目:情侣牵手

题目链接:765. 情侣牵手

题目描述

代码与解题思路

func minSwapsCouples(row []int) (ans int) {
    n := len(row)
    index := make([]int, n)
    for i := 0; i < n; i++ {
        index[row[i]] = i // 存下标
    }
    for i := 0; i < n-1; i+=2 {
        a := row[i]
        b := a^1 // 无论 a 位置是奇数还是偶数, a^1 的结果求出的都是 a 的情侣 b 的值
        if row[i+1] != b {
            // src 是 a 旁边位置的人的下标, tar 是 a 的情侣 b 的坐标(之前存在下标数组中了)
            src, tar := i+1, index[b]
            // 这两步是将 src 和 tar 在下标数组的下标位置交换
            index[row[tar]] = src
            index[row[src]] = tar
            swap(&row[tar], &row[src]) // 交换情侣的位置
            ans++
        }
    }
    return ans
}

func swap(a, b *int) {
    *a, *b = *b, *a
}

这道题虽然是 hard,但是做起来没有这么 hard,我的代码思路如下:

这里先盗用一下 LeetCode 官解的图:

首先我们要理解上面这张图的情况,最少交换次数=情侣对数-1

  1. 创建一个下标数组,用来存每个人的下标
  2. a 代表当前位置的人,b 代表 a 对应的情侣
  3. 如果 a 和 b 不是一对情侣,那就通过下标数组找到 a 对应的情侣,并将他交换到 a 的旁边;这样子遍历一遍 row 数组,就能将 row 中所有的情侣都组好队(因为遍历了一遍,对于每一个不是情侣的组合都进行了寻找和交换的操作)
  4. 每次进行寻找和交换就让 ans++ 计数即可

题解说这是贪心(那就当他是贪心吧~)因为我其实不太会贪心,所以看不出来。

偷看大佬题解

题解说可以用并查集来做,实际上我没有学过图论,所以。。。我也不会并查集啦,那就当没看见吧~

结语

今天就当是扩展思路涨见识了~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ static关键字

C static关键字 1、概述2、重要概念解释3、分情况案例解释3.1 static在类内使用3.2 static在类外使用案例一&#xff1a;案例二&#xff1a;案例三 1、概述 static关键字分为两种情况&#xff1a; 1.在类内使用 2.在类外使用 2、重要概念解释 &#xff08;1&#xff09;翻译…

初识RabbitMQ - 安装 - 搭建基础环境

RabbitMQ 各个名词介绍 Broker&#xff1a;接收和分发消息的应用&#xff0c;RabbitMQ Server 就是 Message Broker Virtual host&#xff1a;出于多租户和安全因素设计的&#xff0c;把 AMQP 的基本组件划分到一个虚拟的分组中&#xff0c;类似于网络中的 namespace 概念。当…

【Java】智慧工地云平台源码支持多端展示(PC端、手机端、平板端)

智慧工地系统实现工地的数字化、精细化、智慧化生产和管理。 一、智慧工地发展趋势 1.更加智能 未来的智慧工地系统将逐步植入人工智能和虚拟现实等高科技技术以更为智慧的方式&#xff0c;来实现岗位人员与工地现场的交互与配合。智慧工地系统能够在工程全生命周期管理的过程…

单挑特斯拉,华为智选车迈入第二阶段

文丨刘俊宏 编丨王一粟 华为智选车的节奏越来越快。 11月9日&#xff0c;华为跟奇瑞打造的首款C级纯电轿车智界S7发布&#xff0c;预售价为25.8万起。 在发布会上&#xff0c;华为常务董事、终端BG CEO、智能汽车解决方案BU董事长余承东采取手机以往最惯用的对标营销手法&a…

激光雷达标定板是自动驾驶系统中关键部件

中国政府制定了多项产业发展规划&#xff0c;包括《汽车产业中长期发展规划》和《新一代人工智能发展规划》等&#xff0c;旨在推动汽车产业的转型升级&#xff0c;培育具有国际竞争力的汽车品牌&#xff0c;同时鼓励企业加大对自动驾驶技术研发的投入&#xff0c;加快自动驾驶…

StartUML的基本使用

文章目录 简介和安装创建包创建类视图时序图 简介和安装 最近在学习一个项目的时候用到了StartUML来构造项目的类图和时序图 虽然vs2019有类视图&#xff0c;但是也不是很清晰&#xff0c;并没有生成uml图&#xff0c;但是宇宙最智能的IDE IDEA有生成uml图的功能 下面就简单介…

Mac下eclipse配置JDK

一、配置JDK&#xff0c;需要电脑下载Java并且配置环境 Mac环境配置&#xff08;Java&#xff09;----使用bash_profile进行配置&#xff08;附下载地址&#xff09; (1)、左上角找到“Eclipse”-->“Preferences...” (2)、找到“Java”-->“Installde JREs”-->界…

C语言计算字符串中数字字符的个数

文章目录 1-9题前言例题10例题11答案例题10答案答案1答案2 例题11答案 1-9题 C语言基础例题1-3题-指针篇 C语言基础例题4-5题-二维数组篇 C语言基础例题6-7题-结构体篇 C语言基础例题8-9题-大作业篇 前言 下列题目需要学习字符串、指针后才可练习。 例题10 请编写一个程序…

【完美世界】云曦限定皮肤成意难平,受广泛赞誉,算是大获成功

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料《完美世界》最新资讯。近期&#xff0c;《完美世界》的热度直线上升&#xff0c;超越了其他国漫和电视剧&#xff0c;登顶平台畅销榜第一&#xff0c;观众们更是将其与巅峰时期的《斗罗大陆》相提并论…

基于SSM的电子病历系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

关于Google Play应用商店的优化技巧1

作为Google Play商店ASO策略的一部分&#xff0c;我们需要查明并优化有助于应用排名的各种因素。在这里将介绍几个可以增强我们列表并增加在搜索中被发现的机会的技巧。 1、优化标题和描述字段。 在创建有效的Google Play商店列表时&#xff0c;我们应该考虑的第一个元素是应用…

AD教程 (十二)原理图的编译设置和检查

AD教程 &#xff08;十二&#xff09;原理图的编译设置和检查 通过肉眼初步排查&#xff0c;观察一下原理图上有什么错误 工程编译排查错误 选中工程&#xff0c;右键&#xff0c;选择Compile PCB Project对工程进行编译&#xff0c;根据编译报错&#xff0c;定位错误&#…

Linux文件类型与权限及其修改

后面我们写代码时&#xff0c;写完可能会出现没有执行权限什么的&#xff0c;所以我们要知道文件都有哪些权限和类型。 首先 就像我们之前目录结构图里面有个/dev,它就是存放设备文件的&#xff0c;也就是说&#xff0c;哪怕是一个硬件设备&#xff0c;例如打印机啥的&#xf…

Springboot+vue的高校办公室行政事务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的高校办公室行政事务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的高校办公室行政事务管理系统&#xff0c;采用M&#xff08;m…

UnRaid安装安装仓库管理系统GreaterWMS

文章目录 0、前言1、安装流程1.1、克隆GreaterWMS项目到UnRaid本地目录1.2、修改项目前后端端口1.3、修改baseurl1.4、修改Nginx.conf配置文件1.5、安装依赖插件1.5.1、Docker Compose Manager插件1.5.2、Python3环境 1.6、创建GreaterWMS容器1.6.1、为前后端启动脚本赋执行权限…

Postman模拟上传文件

如图&#xff0c;在F12抓到的上传文件的请求 那要在postman上模拟这种上传&#xff0c;怎么操作呢&#xff0c;如图&#xff0c;选中【Select File】选取文件上传即可

Flink在汽车行业的应用【面试加分系列】

很多同学问我为什么要发这些大数据前沿汇报&#xff1f; 一方面是自己学习完后觉得非常好&#xff0c;然后总结发出来方便大家阅读&#xff1b;另外一方面&#xff0c;看这些汇报对你的面试帮助会很大&#xff0c;特别是面试前可以看看即将面试公司在大数据前沿的发展动向&…

ubuntu上如何移植thttpd

thttpd的特点 thttpd 是一个简单、小巧、便携、快速且安全的 HTTP 服务器。 简单&#xff1a; 它只处理实现 HTTP/1.1 所需的最低限度。好吧&#xff0c;也许比最低限度多一点。 小&#xff1a; 请参阅比较图表。它还具有非常小的运行时大小&#xff0c;因为它不会分叉并且非…

【Java王大师王天师】关注有礼博客模板

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

[LeetCode]-225. 用队列实现栈-232. 用栈实现队列

目录 225. 用队列实现栈 题目 思路 代码 232. 用栈实现队列 题目 思路 代码 225. 用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目 请你仅使用两个队列实现一个后…