列表

详情


2295. 替换数组中的元素

给你一个下标从 0 开始的数组 nums ,它包含 n 个 互不相同 的正整数。请你对这个数组执行 m 个操作,在第 i 个操作中,你需要将数字 operations[i][0] 替换成 operations[i][1] 。

题目保证在第 i 个操作中:

请你返回执行完所有操作后的数组。

 

示例 1:

输入:nums = [1,2,4,6], operations = [[1,3],[4,7],[6,1]]
输出:[3,2,7,1]
解释:我们对 nums 执行以下操作:
- 将数字 1 替换为 3 。nums 变为 [3,2,4,6] 。
- 将数字 4 替换为 7 。nums 变为 [3,2,7,6] 。
- 将数字 6 替换为 1 。nums 变为 [3,2,7,1] 。
返回最终数组 [3,2,7,1] 。

示例 2:

输入:nums = [1,2], operations = [[1,3],[2,1],[3,2]]
输出:[2,1]
解释:我们对 nums 执行以下操作:
- 将数字 1 替换为 3 。nums 变为 [3,2] 。
- 将数字 2 替换为 1 。nums 变为 [3,1] 。
- 将数字 3 替换为 2 。nums 变为 [2,1] 。
返回最终数组 [2,1] 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> arrayChange(vector<int>& nums, vector<vector<int>>& operations) { } };

python3 解法, 执行用时: 152 ms, 内存消耗: 51.5 MB, 提交时间: 2022-12-08 11:32:04

class Solution:
    def arrayChange(self, nums: List[int], operations: List[List[int]]) -> List[int]:
        mp = {}
        for x, y in reversed(operations):
            mp[x] = mp.get(y, y)
        return [mp.get(num, num) for num in nums]

golang 解法, 执行用时: 196 ms, 内存消耗: 22.4 MB, 提交时间: 2022-12-08 11:31:49

func arrayChange(nums []int, operations [][]int) []int {
	mp := map[int]int{}
	for i := len(operations) - 1; i >= 0; i-- {
		p := operations[i]
		x, y := p[0], p[1]
		if mpY, ok := mp[y]; ok {
			y = mpY
		}
		mp[x] = y
	}
	for i, num := range nums {
		if m, ok := mp[num]; ok {
			nums[i] = m
		}
	}
	return nums
}

golang 解法, 执行用时: 204 ms, 内存消耗: 20.7 MB, 提交时间: 2022-12-08 11:31:39

func arrayChange(nums []int, operations [][]int) []int {
	idx := make(map[int]int, len(nums))
	for i, num := range nums {
		idx[num] = i
	}
	for _, op := range operations {
		x, y := op[0], op[1]
		i := idx[x]
		nums[i] = y
		delete(idx, x)
		idx[y] = i
	}
	return nums
}

python3 解法, 执行用时: 164 ms, 内存消耗: 62.3 MB, 提交时间: 2022-12-08 11:30:59

class Solution:
    def arrayChange(self, nums: List[int], operations: List[List[int]]) -> List[int]:
        idx = {num: i for i, num in enumerate(nums)}
        for x, y in operations:
            i = idx[x]
            nums[i] = y
            del idx[x]
            idx[y] = i
        return nums

上一题