LCP 50. 宝石补给

46 阅读1分钟

leetcode.cn/problems/WH…

按照题意模拟每一次赠送宝石的操作,最后遍历 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)