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

目录
相关文章
【动态规划】【树形dp】【深度优先搜索】LCP 26. 导航装置
【动态规划】【树形dp】【深度优先搜索】LCP 26. 导航装置
|
5月前
【每日一题Day332】LCP 06. 拿硬币 | 模拟
【每日一题Day332】LCP 06. 拿硬币 | 模拟
33 0
|
5月前
|
算法
算法刷题(二十二):宝石与石头
算法刷题(二十二):宝石与石头
59 0
|
4月前
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
|
5月前
|
算法 测试技术 索引
【力扣】45.跳跃游戏Ⅱ
【力扣】45.跳跃游戏Ⅱ
|
存储 机器人 C++
leetcode 每日一题 874. 模拟行走机器人 c++模拟解法
简单来说就是机器人在一个矩阵上移动 我们要找到一个离原点的一个最大欧式距离的平方
123 0
|
5月前
|
算法 测试技术 C#
【数学知识】LCP42: 玩具套圈
【数学知识】LCP42: 玩具套圈
|
11月前
|
算法 测试技术 容器
代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
41 1
LCP 50. 宝石补给(每日一题)
LCP 50. 宝石补给(每日一题)
45 0
|
C语言 C++
【二分查找】LCP 18. 早餐组合
【二分查找】LCP 18. 早餐组合
102 0