美文网首页
【算法题】2766. 重新放置石块

【算法题】2766. 重新放置石块

作者: 程序员小2 | 来源:发表于2023-07-18 08:09 被阅读0次

题目:

给你一个下标从 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 <= 10^5
1 <= moveFrom.length <= 10^5
moveFrom.length == moveTo.length
1 <= nums[i], moveFrom[i], moveTo[i] <= 10^9
测试数据保证在进行第 i 步操作时,moveFrom[i] 处至少有一个石块。

java代码:

class Solution {
    public List<Integer> relocateMarbles(int[] nums, int[] moveFrom, int[] moveTo) {
        Set<Integer> s = new HashSet();
        for (int num: nums) s.add(num);             // 加入初始石头
        for (int i = 0; i < moveFrom.length; ++i) { // 移动石头
            s.remove(moveFrom[i]);
            s.add(moveTo[i]);
        }
        return s.stream().sorted().toList();        // 返回答案
    }
}

相关文章

  • 2018华为软件精英挑战赛——放置篇

    上篇写了预测的部分,这篇写写放置的算法。 前期的放置算法 贪心算法 初看放置问题,我是从背包问题的角度考虑,因此我...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • leetcode:逆序链表

    在工作中意识到算法能力还是很差,所以捡起来重新刷题。与君共勉之。

  • Android词云放置算法

    词云(WordCloud)是分析数据时一项有趣的展示方式, 它将数据中的关键词按权重设置不同的大小, 放置成一定的...

  • 面试题高频算法题整理

    以下算法题几乎都是简单题,都为面试算法题值得刷的题,需要理解并记住解题思路,而其中★标注的题,更是面试算法题中的高...

  • 【北京第十九天】

    2016.06.24 周五 算法题:求两个数组的交集,整理了五种思路。重新接触了堆排序,spring,beans,...

  • 2019-06-24 面试题

    1.算法题: 一个圆环上有10(0~9)个点,判断走了n步后能不能重新回到原点0。 2.java基础题 overr...

  • 2018-09-19小记

    信标是沙盒游戏中的实用性方块之一。繁体中文称烽火台,是需要放置在钻石块,金块,绿宝石块或铁块(或这四种方块的任意组...

  • 石块

    我是一名旅行家,去过无数的地方,见过无数的壮观事物,今天我要去一座俄罗斯的山脉去看看有没有新奇事物。 我坐上飞...

  • 表达式去括号

    date: 2018-9-15昨天做了道算法题,感觉有点局限性,今天重新修改了下。 数据格式 类型:string,...

网友评论

      本文标题:【算法题】2766. 重新放置石块

      本文链接:https://www.haomeiwen.com/subject/gqrnudtx.html