【每日一题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 )

目录
相关文章
|
6月前
【每日一题Day332】LCP 06. 拿硬币 | 模拟
【每日一题Day332】LCP 06. 拿硬币 | 模拟
35 0
|
6月前
|
算法
算法刷题(二十二):宝石与石头
算法刷题(二十二):宝石与石头
67 0
|
5月前
|
存储 索引
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
38 1
|
5月前
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
|
6月前
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
|
存储 机器人 C++
leetcode 每日一题 874. 模拟行走机器人 c++模拟解法
简单来说就是机器人在一个矩阵上移动 我们要找到一个离原点的一个最大欧式距离的平方
133 0
LCP 50. 宝石补给(每日一题)
LCP 50. 宝石补给(每日一题)
49 0
|
算法 C语言
力扣 - LCP 18. 早餐组合
力扣 - LCP 18. 早餐组合
111 0
洛谷P1135 奇怪的电梯——广搜
洛谷P1135 奇怪的电梯——广搜
103 0
【每日一题Day62】LC1760袋子里最少数目的球 | 二分查找
首先,将题意转化为,当操作次数一定时,求出单个袋子里球的数目的最大值的最小值y yy,那么可以通过二分查找的方法找到最终的y yy,二分查找的下限为1,上限为数组nums中的最大值
114 0
【每日一题Day62】LC1760袋子里最少数目的球 | 二分查找