LeetCode 1722. 执行交换操作后的最小汉明距离(并查集)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你两个整数数组 source 和 target ,长度都是 n 。
还有一个数组 allowedSwaps ,其中每个 allowedSwaps[i] = [ai, bi] 表示你可以交换数组 source 中下标为 ai 和 bi(下标从 0 开始)的两个元素。
注意,你可以按 任意 顺序 多次 交换一对特定下标指向的元素。

相同长度的两个数组 source 和 target 间的 汉明距离 是元素不同的下标数量。
形式上,其值等于满足 source[i] != target[i] (下标从 0 开始)的下标 i(0 <= i <= n-1)的数量。

在对数组 source 执行 任意 数量的交换操作后,返回 source 和 target 间的 最小汉明距离

示例 1:
输入:source = [1,2,3,4], target = [2,1,4,5], 
allowedSwaps = [[0,1],[2,3]]
输出:1
解释:source 可以按下述方式转换:
- 交换下标 01 指向的元素:source = [2,1,3,4]
- 交换下标 23 指向的元素:source = [2,1,4,3]
source 和 target 间的汉明距离是 1 ,
二者有 1 处元素不同,在下标 3 。示例 2:
输入:source = [1,2,3,4], target = [1,3,2,4], 
allowedSwaps = []
输出:2
解释:不能对 source 执行交换操作。
source 和 target 间的汉明距离是 2 ,
二者有 2 处元素不同,在下标 1 和下标 2 。示例 3:
输入:source = [5,1,2,4,3], target = [1,5,4,2,3], 
allowedSwaps = [[0,4],[4,2],[1,3],[1,4]]
输出:0提示:
n == source.length == target.length
1 <= n <= 10^5
1 <= source[i], target[i] <= 10^5
0 <= allowedSwaps.length <= 10^5
allowedSwaps[i].length == 2
0 <= ai, bi <= n - 1
ai != bi

https://leetcode-cn.com/problems/minimize-hamming-distance-after-swap-operations/

2. 解题

并查集学习,请点击

  • 对可以交换的下标位置,使用并查集进行合并
  • 对 source 数组中每个位置的数,属于哪个集合,计数
  • 遍历 target 数组,对每个位置的数,查看对应集合,看是否存在,记录数量,并更新计数
class dsu // 并查集
{
public:vector<int> f;dsu(int n){f.resize(n);for(int i = 0; i < n; i++)f[i] = i;}void merge(int a, int b){int fa = find(a);int fb = find(b);f[fa] = fb;}int find(int a){if(a == f[a])return a;return f[a] = find(f[a]);}
};
class Solution {
public:int minimumHammingDistance(vector<int>& source, vector<int>& target, vector<vector<int>>& allowedSwaps) {int n = source.size();dsu u(n);for(auto& a : allowedSwaps)u.merge(a[0], a[1]);int same = 0;unordered_map<int,unordered_map<int,int>> m;for(int i = 0; i < n; i++){int fa = u.find(i);m[fa][source[i]]++;}for(int i = 0; i < n; i++){int fa = u.find(i);if(m[fa][target[i]] > 0){same++;m[fa][target[i]]--;}}return n-same;}
};

908 ms 145.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

线性表的顺序表示和实现

/* 顺序表存储结构容易实现随机存取线性表的第i 个数据元素的操作&#xff0c;但在实现插入、 删除的操作时要移动大量数据元素&#xff0c;所以&#xff0c;它适用于数据相对稳定的线性表&#xff0c;如职工工资 表、学生学籍表等。 c2-1.h 是动态分配的顺序表存储结构&#x…

LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)

文章目录1. 题目2. 解题2.1 DFS2.2 状态压缩DP265 / 3871&#xff0c; 前6.85% 前3题题解&#xff1a; LeetCode 5649. 解码异或后的数组&#xff08;位运算&#xff09;LeetCode 5652. 交换链表中的节点&#xff08;快慢指针&#xff09;LeetCode 5650. 执行交换操作后的最小…

win7优化设置_5项优化,至少提升20%!

Win7系统已经接近落幕的尾声了&#xff0c;不知大家是否早已做好准备了呢&#xff1f;很多朋友说win7不如win10好用&#xff0c;但马克思主义说到“新事物必将会取代旧事物”&#xff0c;也没必要一直坚守着win7的战线啦。自电脑升级了之后&#xff0c;便对win10系统进行了一些…

python实现两张图片横向和纵向拼接

本文实例为大家分享了python实现图片横向和纵向拼接的具体代码&#xff0c; 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来供大家参考&#xff0c;具体内容如下&#xff1a; 一、代码&#xff1a; from PIL import Imagedef join(png1, png2, fl…

LeetCode 1203. 项目管理(两次拓扑排序)

文章目录1. 题目2. 解题1. 题目 公司共有 n 个项目和 m 个小组&#xff0c;每个项目要不无人接手&#xff0c;要不就由 m 个小组之一负责。 group[i] 表示第 i 个项目所属的小组&#xff0c;如果这个项目目前无人接手&#xff0c;那么 group[i] 就等于 -1。&#xff08;项目和…

BZOJ K大数查询(分治)(Zjoi2013)

题目链接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3110 Description 有N个位置&#xff0c;M个操作。操作有两种&#xff0c;每次操作如果是1 a b c的形式表示在第a个位置到第b个位置&#xff0c;每个位置加入一个数c如果是2 a b c形式&#xff0c;表示询…

为什么电脑不能打字_为什么不能用电脑验光仪测出来的度数直接配眼镜?

当今世界&#xff0c;科学技术爆炸式发展和进步&#xff0c;很多人问我&#xff1a;“电脑验光仪的准确度越来越高&#xff0c;会不会取代人工验光师&#xff1f;”我们这代人从小听着学着“科学技术是第一生产力”长大的&#xff0c;自然是技术崇拜者&#xff0c;自然的反应当…

前端DEMO:网络上流行的抖音罗盘

一、效果&#xff1a; 二、关于代码&#xff1a; CSS/demo.css代码&#xff1a; * {margin: 0;padding: 0; } html, body {width: 100%;height: 100%;background-color: black;overflow: hidden; } #clock {position: relative;width: 100%;height: 100%;background: black; }…

[Kaggle] Sentiment Analysis on Movie Reviews(BERT)

文章目录1. 预训练模型下载2. 数据集3. 加载预训练模型4. 提交结果练习地址&#xff1a;https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews 相关博文&#xff1a; [Kaggle] Spam/Ham Email Classification 垃圾邮件分类&#xff08;BERT&#xff09; 本文使用 hu…

Qt利用avilib实现录屏功能_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...

内容概览1.openlayers6结合geoserver利用WFS服务实现图层编辑功能2.源代码demo下载效果图如下&#xff1a;本篇主要是参照openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的&#xff0c;openlayers6通过调用geoserver发布的地图服务WFS来达到图层编…

LeetCode DD-2020006. 简单游戏(前缀和)

文章目录1. 题目2. 解题1. 题目 给出一个长度为 n 的数组 a&#xff0c;你需要在这个数组中找到一个长度至少为 m 的区间&#xff0c;使得这个区间内的数字的和尽可能小。 输入描述: 第一行包含一个正整数 n&#xff0c;m,表示数组的大小和所选区间的最小长度。(1<n<1…

【转载】OpenStack Swift学习笔记

免责声明&#xff1a; 本文转自网络文章&#xff0c;转载此文章仅为个人收藏&#xff0c;分享知识&#xff0c;如有侵权&#xff0c;请联系博主进行删除。 原文作者&#xff1a;崔炳华 原文地址&#xff1a;http://blog.csdn.net/i_chips/article/details/17787017 1 概…

Android Studio 选项菜单和动画结合_Android 应用与iOS 应用之间的设计差异对比!

同一个App&#xff0c;为什么iOS 和Android 的交互操作有那么大的区别&#xff1f;本文将用大量原生设计案例&#xff0c;为你一一说明它们为什么应该这样做&#xff0c;赶紧学起来&#xff01;了解并适当结合平台规范与优势&#xff0c;才能做到最佳的用户体验。为了创建最佳的…

图片操作案例:python 批量更改图像尺寸到统一大小的方法

一、需求&#xff1a; 批量修改该图片长与宽尺寸 二、素材&#xff1a; 三、代码&#xff1a; from PIL import Image import os.path import globdef convertjpg(jpgfile,outdir,width512,height512):imgImage.open(jpgfile)try:new_imgimg.resize((width,height),Image.BI…

LeetCode 753. 破解保险箱(DFS)

文章目录1. 题目2. 解题1. 题目 有一个需要密码才能打开的保险箱。 密码是 n 位数, 密码的每一位是 k 位序列 0, 1, …, k-1 中的一个 。 你可以随意输入密码&#xff0c;保险箱会自动记住最后 n 位输入&#xff0c;如果匹配&#xff0c;则能够打开保险箱。 举个例子&#x…

windows副本不是正版怎么解决_解决Windows沙盒怎么联网问题

windows 沙盒简单来讲就是一款沙盒虚拟化的Windows系统&#xff0c;而最近还蛮多小伙伴来问小编说&#xff0c;Windows沙盒能够联网吗&#xff1f;Windows沙盒怎么联网&#xff1f;针对这个问题&#xff0c;接下来小编就来和大家好好的说说关于windows沙盒的情况吧。1、首先我们…

西瓜视频(头条)解析并利用IDM工具下载

一、西瓜视频网址解析完整代码&#xff1a; import requests import urllib3 urllib3.disable_warnings() import re import json import base64cookie你的cookie headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like…

天池 在线编程 寻找字母(计数)

文章目录1. 题目2. 解题1. 题目 给定一个字符串str&#xff0c;返回字符串中字母顺序最大的而且同时在字符串中出现大写和小写的字母。 如果不存在这样的字母&#xff0c;返回‘~‘。 please return uppercase |str|<1000示例 例 1&#xff1a; 输入:"aAbBcD" 输…

电脑硬件检测_【学无止境】电脑硬件维修测试学习资料(附送各类PC检修资源)...

大橙子资源驿站『 电脑硬件维修测试学习资料』多年的PC硬件检修工具和资料&#xff0c;都是本人一年年亲测积累起来的&#xff0c;安全无毒。打包上传分享给大家。—— 资源分享者语关于『 电脑硬件维修学习资料 』这是甛橙从论坛搬运的&#xff0c;因为看着评分挺高&#xff0…

加速国内 Github 访问,下载的9种方案!

1、GitHub 镜像访问 ​​​​​​​这里提供两个最常用的镜像地址&#xff1a; https://github.com.cnpmjs.org https://hub.fastgit.org 也就是说上面的镜像就是一个克隆版的Github&#xff0c;你可以访问上面的镜像网站&#xff0c;网站的内容跟Github是完整同步的镜像&…