LCP 50. 宝石补给(每日一题)

简介: LCP 50. 宝石补给(每日一题)

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


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


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


注意:


赠送将按顺序逐步进行。

示例 1:


输入:gem = [3,1,2], operations = [[0,2],[2,1],[2,0]]


输出:2


解释: 第 1 次操作,勇者 0 将一半的宝石赠送给勇者 2, gem = [2,1,3] 第 2 次操作,勇者 2 将一半的宝石赠送给勇者 1, gem = [2,2,2] 第 3 次操作,勇者 2 将一半的宝石赠送给勇者 0, gem = [3,2,1] 返回 3 - 1 = 2


示例 2:


输入:gem = [100,0,50,100], operations = [[0,2],[0,1],[3,0],[3,0]]


输出:75


解释: 第 1 次操作,勇者 0 将一半的宝石赠送给勇者 2, gem = [50,0,100,100] 第 2 次操作,勇者 0 将一半的宝石赠送给勇者 1, gem = [25,25,100,100] 第 3 次操作,勇者 3 将一半的宝石赠送给勇者 0, gem = [75,25,100,50] 第 4 次操作,勇者 3 将一半的宝石赠送给勇者 0, gem = [100,25,100,25] 返回 100 - 25 = 75


示例 3:


输入:gem = [0,0,0,0], operations = [[1,2],[3,1],[1,2]]


输出:0


提示:


2 <= gem.length <= 10^3

0 <= gem[i] <= 10^3

0 <= operations.length <= 10^4

operations[i].length == 2

0 <= operations[i][0], operations[i][1] < gem.length


思路


很简单 遥遥领先

01b80e1c52db4b65aa854d248c313057.png


代码


class Solution {
public:
    int giveGem(vector<int>& gem, vector<vector<int>>& operations) {
    int m=gem.size()-1;
    for(auto &i:operations)
    {
        gem[i[1]]+=gem[i[0]]/2;
        gem[i[0]]-=gem[i[0]]/2;
    }
    sort(gem.begin(),gem.end());
    return gem[m]-gem[0];
    }
};
目录
相关文章
|
8月前
【每日一题Day327】LCP 50. 宝石补给 | 模拟
【每日一题Day327】LCP 50. 宝石补给 | 模拟
57 0
|
8月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 218. 天际线问题 算法解析
☆打卡算法☆LeetCode 218. 天际线问题 算法解析
|
8月前
【每日一题Day332】LCP 06. 拿硬币 | 模拟
【每日一题Day332】LCP 06. 拿硬币 | 模拟
41 0
|
8月前
|
算法
算法刷题(二十二):宝石与石头
算法刷题(二十二):宝石与石头
77 0
|
7月前
|
人工智能 程序员 定位技术
老程序员分享:NOIP2016天天爱跑步(树上差分)
老程序员分享:NOIP2016天天爱跑步(树上差分)
35 0
|
8月前
校门外的树
校门外的树
29 0
|
8月前
|
算法 测试技术 C#
【数学知识】LCP42: 玩具套圈
【数学知识】LCP42: 玩具套圈
【Leetcode -LCP44.开幕式焰火 -682.棒球比赛】
【Leetcode -LCP44.开幕式焰火 -682.棒球比赛】
35 0
|
算法 C语言
力扣 - LCP 18. 早餐组合
力扣 - LCP 18. 早餐组合
122 0

热门文章

最新文章