P2295 Java使用Hash表解决此问题
ideas
首先我们创建一个集合用来记录nums数组中的每个数字对应的下标
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i],i);
}
接下来遍历operations,判断我们要判断operation[0]的key是否存在,如果存在那么就获取operation[0]的下标,然后在nums数组替换他的值
nums[index] = operation[1];
接下来更新map中的状态,更新operation[1]所对应的下标
map.put(nums[index],index);
code
class Solution {
public int[] arrayChange(int[] nums, int[][] operations) {
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i],i);
}
for (int[] operation : operations) {
if (map.containsKey(operation[0])){
int index = map.get(operation[0]);
nums[index] = operation[1];
map.put(nums[index],index);
}
}
return nums;
}
}