[JavaScript 刷题] 数组 - 替换数组中的元素,leetcode 2295
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 数组 - 替换数组中的元素,leetcode 2295相关的知识,希望对你有一定的参考价值。
[javascript 刷题] 数组 - 替换数组中的元素,leetcode 2295
github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。
题目地址:2295. Replace Elements in an Array
题目
如下:
You are given a 0-indexed array nums that consists of n distinct positive integers. Apply m operations to this array, where in the
i^th
operation you replace the numberoperations[i][0]
withoperations[i][1]
.It is guaranteed that in the ith operation:
- operations[i][0] exists in nums.
- operations[i][1] does not exist in nums.
Return the array obtained after applying all the operations.
解题思路
因为是 JavaScript,所以直接就使用 Map 做了……毕竟 Map 的迭代比起数组来说方便一些。
想法就是,使用 Map 保存所有出现过的数字,以数字为键,index 为值进行保存,如下面的数组:[1,2,4,6]
,Map 的值为:Map(4) 1 => 0, 2 => 1, 4 => 2, 6 => 3
。
当然,这里这么做的原因题目中的限制还是挺多的:
- 所有出现的数字都具有唯一性
operations[i][0]
操作的数字一定会出现在数组中operations[i][1]
提供的数字一定不会出现在数组中
使用 JavaScript 解题
/**
* @param number[] nums
* @param number[][] operations
* @return number[]
*/
var arrayChange = function (nums, operations)
const map = new Map();
for (let i = 0; i < nums.length; i++)
map.set(nums[i], i);
for (let [originalVal, replacedVal] of operations)
map.set(replacedVal, map.get(originalVal));
map.delete(originalVal);
const res = [];
for (let [val, pos] of map)
res[pos] = val;
return res;
;
以上是关于[JavaScript 刷题] 数组 - 替换数组中的元素,leetcode 2295的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 数组 - 划分数组使最大差为 K,leetcode 2294
[JavaScript 刷题] Code Signal - 改变数组(arrayChange)
[JavaScript 刷题] Code Signal - 相似数组(Are Similar?)