LeetCode-day24-2766. 重新放置石块

LeetCode-day24-2766. 重新放置石块

题目描述

给你一个下标从 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[i] 加到一个哈希集合中。
  2. 遍历 moveFrom 和 moveTo,先把 moveFrom[i]从哈希集合中去掉,然后把 moveTo[i] 加入哈希集合。
  3. 取出哈希集合中的元素,从小到大排序后返回。

代码

python 复制代码
class Solution:
    def relocateMarbles(self, nums: List[int], moveFrom: List[int], moveTo: List[int]) -> List[int]:
        st = set(nums)
        for x,y in zip(moveFrom,moveTo):
            st.remove(x)
            st.add(y)
        return sorted(st)
相关推荐
李少兄13 分钟前
Java 基本数据类型 vs 包装类(引用数据类型)
java·开发语言·python
拓端研究室TRL20 分钟前
Python贝叶斯分层模型专题|对环境健康、医学心梗患者、体育赛事数据空间异质性实证分析合集|附数据代码
开发语言·python
CYRUS_STUDIO1 小时前
Android 中实现一个自定义的 AES 算法
android·算法·逆向
伏颜.4 小时前
Dify实现自然语言生成SQL并执行
python·dify
Studying 开龙wu4 小时前
机器学习模型部署:使用Flask 库的 Python Web 框架将XGBoost模型部署在服务器上(简单小模型)从模型训练到部署再到本地调用
python·机器学习·flask
Bruce_Liuxiaowei4 小时前
基于Flask的智能天气助手系统设计
后端·python·flask
蹦蹦跳跳真可爱5896 小时前
Python----计算机视觉处理(Opencv:直方图均衡化)
人工智能·python·opencv·计算机视觉
胡耀超6 小时前
7.模型选择与评估:构建科学的参数调优与性能评估体系——Python数据挖掘代码实践
开发语言·人工智能·python·机器学习·数据挖掘
ElseWhereR6 小时前
机器人能否回到原点 - 简单
c++·算法·leetcode
my_realmy7 小时前
蓝桥杯真题_小蓝和小桥的讨论
java·python·算法·职场和发展·蓝桥杯·intellij-idea