[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 number operations[i][0] with operations[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)

剑指Offer刷题总结

[JavaScript 刷题] Code Signal - 相似数组(Are Similar?)

[JavaScript 刷题] 哈希表 - 两个数组的交集 II,leetcode 350

[JavaScript 刷题] 数组 - 极大极小游戏,leetcode 2293