按照题意模拟每一次赠送宝石的操作,最后遍历 gem 数组,找到最小和最大的值,求差
class Solution {
public int giveGem(int[] gem, int[][] operations) {
for (int[] op : operations) {
int x = op[0], y = op[1];
gem[y] += gem[x] / 2;
gem[x] -= gem[x] / 2;
}
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
for (int val : gem) {
min = Math.min(min, val);
max = Math.max(max, val);
}
return max - min;
}
}
- 时间复杂度 O(n + m), 需要遍历一遍 gem 数组 和 operations数组
- 空间复杂度 O(1)