leetcode 2766. 重新放置石块

news/2024/11/19 7:34:43/

给你一个下标从 0 开始的整数数组 nums ,表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。

在 moveFrom.length 次操作内,你可以改变石块的位置。在第 i 次操作中,你将位置在 moveFrom[i] 的所有石块移到位置 moveTo[i] 。

完成这些操作后,请你按升序返回所有  石块的位置。

注意:

  • 如果一个位置至少有一个石块,我们称这个位置  石块。
  • 一个位置可能会有多个石块。

示例 1:

输入:nums = [1,6,7,8], moveFrom = [1,7,2], moveTo = [2,9,5]
输出:[5,6,8,9]
解释:一开始,石块在位置 1,6,7,8 。
第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,位置 2,6,7,8 有石块。
第 i = 1 步操作中,我们将位置 7 处的石块移到位置 9 处,位置 2,6,8,9 有石块。
第 i = 2 步操作中,我们将位置 2 处的石块移到位置 5 处,位置 5,6,8,9 有石块。
最后,至少有一个石块的位置为 [5,6,8,9] 。

示例 2:

输入:nums = [1,1,3,3], moveFrom = [1,3], moveTo = [2,2]
输出:[2]
解释:一开始,石块在位置 [1,1,3,3] 。
第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,有石块的位置为 [2,2,3,3] 。
第 i = 1 步操作中,我们将位置 3 处的石块移到位置 2 处,有石块的位置为 [2,2,2,2] 。
由于 2 是唯一有石块的位置,我们返回 [2] 。

提示:

  • 1 <= nums.length <= 105
  • 1 <= moveFrom.length <= 105
  • moveFrom.length == moveTo.length
  • 1 <= nums[i], moveFrom[i], moveTo[i] <= 109
  • 测试数据保证在进行第 i 步操作时,moveFrom[i] 处至少有一个石块。
class Solution {
public:vector<int> relocateMarbles(vector<int>& nums, vector<int>& moveFrom, vector<int>& moveTo) {map<int,int> mp;int n=nums.size();for(int i=0;i<n;i++) {mp[nums[i]]++;}int m=moveFrom.size();for(int i=0;i<m;i++) {int sum=mp[moveFrom[i]];mp.erase(moveFrom[i]);mp[moveTo[i]]+=sum;}vector<int> res;for(auto it:mp) {res.push_back(it.first);}return res;}
};


http://www.ppmy.cn/news/911946.html

相关文章

SPAD-502叶绿素仪测定植被叶绿素含量的方法

本文介绍基于SPAD-502叶绿素仪测定植被叶片叶绿素含量的方法。 SPAD-502是由日本柯尼卡美能达&#xff08;Konica Minolta&#xff09;株式会社生产的轻便、手持式叶绿素仪&#xff0c;可以在不破坏作物的情况下快速测量植被叶片中的叶绿素含量。本文就详细介绍基于这一便携式叶…

KUKA机器人视觉3

随着技术的发展&#xff0c;3D相机的使用越来越频繁&#xff0c;当然如果价格亲民点、再亲民点&#xff0c;那将得到更多的使用。 今天我们就来说说3D相机和机器人之间那些思维。 往往3D相机是标定工具的&#xff0c;因此相机给出的位置信息对于机器人来说相当于绝对坐标值&…

Camera

public class Camera extends Object 本类主要用于和 camera service 建立及断开连接、设置拍照功能 、开启及关闭 预览 、拍照、检索 frames 编码成 video 。本类没有默认的构造函数&#xff0c;你可以通过 open() 函数获得一个 Camera 对象。 首先要使用硬件 camer…

leetcode第354场周赛补题

6889. 特殊元素平方和 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;模拟 class Solution { public:int sumOfSquares(vector<int>& nums) {int res 0;for(int i 0; i < nums.size(); i ){if(nums.size() % (i 1) 0) res nums[i] * nums[i];}r…

qt开发技巧之嵌入式linux qt按钮点击触发两次

1.问题 移植qt5.12.9到嵌入式linux系统&#xff0c;tslib作为触摸输入&#xff0c;开发平台是imx6ull&#xff0c;点击pushbutton按钮会出现触发两次点击的情况。 2.解决 vi /etc/profile&#xff0c;在 /etc/profile里添加环境变量&#xff0c;禁止QT自带输入检测&#xff0…

架构师知识体系(5)--建立自己的知识体系吧

http://mp.weixin.qq.com/s?__bizMzA4Nzg5Nzc5OA&mid400103116&idx1&sn89bc2f3644603ffcf5f2c517172141ba&scene23&srcid1025169A7lqdEZNfEhpffDLE#rd http://segmentfault.com/q/1010000002404545 http://www.phpxs.com/post/3508 1、引言 我们每天都…

Ubuntu 深度学习环境配置、Theano TensorFlow PyTorch 安装、常用软件安装方式

文章目录 介绍系统和显卡深度学习环境配置安装 Nvidia 显卡驱动安装 CDUA安装 cuDNN 深度学习框架安装安装 Theano-gpu安装 TensorFlow-gpu安装 PyTorch-gpu 常用软件安装方式通过 Ubuntu 软件中心从软件官网下载需要手动配置环境Chrome——浏览器WPS——文件编辑ClamAV——杀毒…

【并发编程二十二】通过进程名字杀死进程TerminateProcess

【并发编程二十二】通过进程名字杀死进程TerminateProcess 一、代码二、杀进程失败时&#xff0c;检查1、OpenProcess的参数2、UpdatePrivilege提升优先级3、以管理员方式&#xff0c;启动进程 三、启动进程失败1、由于找不到vcruntime140d.dll&#xff0c;无法继续执行代码。2…