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

leetcode 1722. Minimize Hamming Distance After Swap Operations

Problem: 1722. 执行交换操作后的最小汉明距离

既然可以两两交换数字,而且次数不限制,所以可以任意排列

首先并查集拿到所有可能的聚合体,然后对每个根节点,拿到这个树的所有索引i,以及这个树的索引对应数值的统计值

然后遍历每颗树,对当前索引i,若target[l[i]]在ump2内,且值>0则-1,否则sum++,标记target[l[i]] = -1

最后统计不能交换且不同的个数

Code

class joinarr { public: vector<int> arr; int n; joinarr(int n) { this->n = n; arr.resize(n); for(int i = 0; i < n; i++) arr[i] = i; } int find(int a) { while(a!=arr[a]) a = arr[a]; return a; } void join(int a, int c) { int aa = find(a); int cc = find(c); if(aa < cc) arr[cc] = aa; else arr[aa] = cc; } }; class Solution { public: int minimumHammingDistance(vector<int>& source, vector<int>& target, vector<vector<int>>& allowedSwaps) { int n = source.size(); int m = allowedSwaps.size(); joinarr ja = joinarr(n); for(int i = 0; i < m; i++) { ja.join(allowedSwaps[i][0], allowedSwaps[i][1]); } unordered_map<int, vector<int>> ump; unordered_map<int, unordered_map<int, int>> ump2; int ind; for(int i = 0; i < n; i++) { ind = ja.find(i); ump[ind].push_back(i); ump2[ind][source[i]]++; } int num, sum = 0; for(auto&& [k, l] : ump) { for(int i = 0; i < l.size(); i++) { num = target[l[i]]; if(ump2[k].count(num) > 0 && ump2[k][num] > 0) { ump2[k][num]--; } else { sum++; } target[l[i]] = -1; } } for(int i = 0; i < n; i++) { if(target[i] >= 0 && target[i] != source[i]) { sum++; } } return sum; } };
http://www.cnnetsun.cn/news/4106477.html

相关文章:

  • Spring Boot AOP记录用户操作日志
  • 嵌入式开发入门:从LED与传感器控制到物联网系统构建
  • 基于EasyUI与KnockoutJS的通用分页查询与数据导出ViewModel设计
  • 广州微闻网络AI落地技术实践:Agent定制、Token供应与云计算全栈技术解析
  • 在线教育平台开课前三网验收:视频域、直播与 API
  • 多个人同时提问但位置有限
  • UnrealPakViewer 完整上手教程:三步摸清任意 UE4 Pak 文件内部结构
  • Think-a-Tron Mini:从复古玩具到DIY电子项目,探索伪随机数生成与电路设计
  • 102.环形缓冲区之读指针与写指针:原理、实现与完整代码
  • BBDown完整使用手册:让哔哩哔哩视频下载变成一行命令的事
  • 计算机网络学习笔记(六)---网络层与IP协议
  • AI家庭机器人技术解析:从ROS架构到嵌入式开发实践
  • 从零构建智能体:基于Coze平台的可视化AI助手开发实战
  • C语言基础知识-学习笔记
  • 基于大模型与持续学习的人形机器人叠衣系统实战解析
  • 光度立体成像全栈拆解 | 多视角光影法向量求解+梯度积分重建,助力漫反射工件微划痕凹坑褶皱高速高精度2.5D缺陷检测
  • 深挖C语言:深入理解指针(2)
  • 线性可调双路输出电源:原理、设计与噪声抑制全解析
  • 当“让用户满意”变成“让用户更不满意”:AI防御误触发的根源与破解之道
  • OptiCommPy模拟光马赫-曾德尔调制器
  • CAD绘图效率提升:从练习图29拆解系统绘图流程与高效命令组合
  • snpe-VGG案例(uv环境-全流程 教程)
  • 实测通勤15分钟出片全流程,不用电脑不用大内存手机
  • 基于树莓派的智能交互装置:从硬件搭建到AI对话引擎实现
  • 企业信息管理:从“罗生门”到一致性回应的体系构建
  • OPOR-Bench: Evaluating Large Language Models on Online Public Opinion Report Generation
  • AE字体动画核心技巧:从基础动画器到批量预设应用
  • 2026毕业论文AI生成工具打分:6款谁更靠谱
  • 百度网盘Mac版免费提速完整方案:1个开源插件解锁SVIP高速下载(附避坑指南)
  • 使用CD4051实现8路模拟信号复用:硬件设计与Arduino编程指南