【每日一题Day327】LCP 50. 宝石补给 | 模拟

简介: 【每日一题Day327】LCP 50. 宝石补给 | 模拟

LCP 50. 宝石补给

欢迎各位勇者来到力扣新手村,在开始试炼之前,请各位勇者先进行「宝石补给」。

每位勇者初始都拥有一些能量宝石, gem[i] 表示第 i 位勇者的宝石数量。现在这些勇者们进行了一系列的赠送,operations[j] = [x, y] 表示在第 j 次的赠送中 第 x 位勇者将自己一半的宝石(需向下取整)赠送给第 y 位勇者。

在完成所有的赠送后,请找到拥有最多宝石的勇者和拥有最少宝石的勇者,并返回他们二者的宝石数量之差。

  • 思路
    模拟宝石的赠送过程,最后统计最大宝石数目和最小宝石数目,返回其差值
  • 实现
class Solution {
    public int giveGem(int[] gem, int[][] operations) {
        for (int[] opt : operations){
            int x = opt[0], y = opt[1];
            gem[y] += gem[x]/ 2;
            gem[x] -= gem[x] / 2;
        }
        int max = gem[0], min = gem[0];
        for (int num : gem){
            max = Math.max(num, max);
            min = Math.min(num, min);
        }
        return max - min;
    }
}

复杂度

时间复杂度:O ( n )

空间复杂度:O ( 1 )

目录
相关文章
|
7月前
|
并行计算 测试技术 区块链
【图论】【堆优化的单源路径】LCP 20. 快速公交
【图论】【堆优化的单源路径】LCP 20. 快速公交
|
7月前
|
算法 测试技术 C++
【动态规划】【前缀和】【C++算法】LCP 57. 打地鼠
【动态规划】【前缀和】【C++算法】LCP 57. 打地鼠
|
7月前
【每日一题Day332】LCP 06. 拿硬币 | 模拟
【每日一题Day332】LCP 06. 拿硬币 | 模拟
41 0
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 218. 天际线问题 算法解析
☆打卡算法☆LeetCode 218. 天际线问题 算法解析
|
7月前
【每日一题Day213】LCP 33. 蓄水 | 枚举+贪心
【每日一题Day213】LCP 33. 蓄水 | 枚举+贪心
45 0
|
7月前
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
49 0
|
7月前
【错题集-编程题】空调遥控(二分 / 滑动窗口)
【错题集-编程题】空调遥控(二分 / 滑动窗口)
|
7月前
|
算法 测试技术 C#
【数学知识】LCP42: 玩具套圈
【数学知识】LCP42: 玩具套圈
LCP 50. 宝石补给(每日一题)
LCP 50. 宝石补给(每日一题)
55 0
|
算法 C语言
力扣 - LCP 18. 早餐组合
力扣 - LCP 18. 早餐组合
121 0