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

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

题目描述

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

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

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

注意:

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

示例

示例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. 把所有 numsi 加到一个哈希集合中。
  2. 遍历 moveFrom 和 moveTo,先把 moveFromi从哈希集合中去掉,然后把 moveToi 加入哈希集合。
  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)
相关推荐
w_zero_one3 小时前
链表(4)
java·数据结构·算法
吠品3 小时前
GitHub 周榜拆解:决策小模型扎堆上位
c语言·开发语言·算法
Ivanqhz3 小时前
MLA、DSA、CSA、HCA
人工智能·算法·机器学习
逗脑IDE4 小时前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发
嘎嘎风4 小时前
MiniMind 学习笔记之 07 模型怎么学会猜词(旋钮是怎么被拧动的)
算法·源码阅读
协皓家具4 小时前
2026年广州岛台吧台椅厂家有啥新变化
大数据·运维·python·devops
yuniko-n4 小时前
【Java】字符串相关坑点
java·开发语言·python
用户019027581614 小时前
如何用 Python 统计 A 股连续涨停(几连板)?
python
外收内放4 小时前
Python基础语法练习题(拓展1)
python·游戏
和裕4 小时前
定制纸箱刀模费全解析:费用定义与可减免合作场景
大数据·运维·网络·人工智能·算法