咸阳企业做网站,网站营售,如何减少网站建设中的错误,静态网站设计心得#x1f680; 算法题 #x1f680; #x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 #x1f340; #x1f332; 越难的东西,越要努力坚持#xff0c;因为它具有很高的价值#xff0c;算法就是这样✨ #x1f332; 作者简介#xff1a;硕风和炜#xff0c;… 算法题 算法刷题专栏 | 面试必备算法 | 面试高频算法 越难的东西,越要努力坚持因为它具有很高的价值算法就是这样✨ 作者简介硕风和炜CSDN-Java领域优质创作者保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享 恭喜你发现一枚宝藏博主,赶快收入囊中吧 人生如棋我愿为卒行动虽慢可谁曾见我后退一步 算法题 目录 题目链接⛲ 题目描述 求解思路实现代码运行结果⚡ 哈希表 求解思路 实现代码 运行结果 共勉 题目链接
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.length 105 1 moveFrom.length 105 moveFrom.length moveTo.length 1 nums[i], moveFrom[i], moveTo[i] 109 测试数据保证在进行第 i 步操作时moveFrom[i] 处至少有一个石块。 求解思路实现代码运行结果 ⚡ 哈希表 求解思路
该题目的求解思路比较简单我们可以使用map来记录每一个位置出现的次数也可以通过有序表treeset来记录元素既可以去重又可以保证有序因为元素个数并不会影响最终的结果(就是题目中说的全部交换)。遍历moveFrom和moveTo数组先获得move的次数加到to的次数上最后移除move注意如果move和to位置想等直接跳过即可。最后list收集map中所有的key并对其进行升序排序。有了基本的思路接下来我们就来通过代码来实现一下的解法。 实现代码
class Solution {public ListInteger relocateMarbles(int[] nums, int[] moveFrom, int[] moveTo) {ListInteger ans new ArrayList();int n moveFrom.length;HashMapInteger, Integer map new HashMap();for (int v : nums) {map.put(v, map.getOrDefault(0, v) 1);}for (int i 0; i n; i) {int move moveFrom[i], to moveTo[i];if (move to)continue;int cnt map.getOrDefault(0, move);map.put(to, map.getOrDefault(0, to) cnt);map.remove(move);}for (Map.EntryInteger, Integer entry : map.entrySet()) {ans.add(entry.getKey());}Collections.sort(ans);return ans;}
}运行结果 共勉
最后我想和大家分享一句一直激励我的座右铭希望可以与大家共勉