【LeetCode】替换数组中的元素 Java 题解
题目描述
给你一个下标从 0 开始的数组 nums ,它包含 n 个 互不相同 的正整数。请你对这个数组执行 m 个操作,在第 i 个操作中,你需要将数字 operations[i][0] 替换成 operations[i][1] 。
题目保证在第 i 个操作中:
operations[i][0] 在 nums 中存在。operations[i][1] 在 nums 中不存在。请你返回执行完所有操作后的数组。
复制代码
思路分析
今天的算法题目是数组题目,题目要求替换数组元素,并给出了需要替换的元素和替换后的元素。根据题目要求,我们首先可以使用暴力的方式解决,循环遍历 operations 数组,然后对 nums 数组进行操作。
暴力的方法会对 nums 数组进行多次遍历,时间复杂度比较高,不能通过所有测试样例。
我们采用 hashmap 的数据结构,以空间换时间,记录每一个数值出现的索引位置,然后进行指定位置的替换,数组根据索引位置替换数值的时间复杂度是 O(1)。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/3787a0d8ef32af110b65248cc】。文章转载请联系作者。
评论