LCP50.宝石补给
链接:LCP50.宝石补给
难度:Easy
标签:数组、模拟
简介:在完成所有的赠送后,请找到拥有最多宝石的勇者和拥有最少宝石的勇者,并返回他们二者的宝石数量之差。
题解 1 - cpp
- 编辑时间:2023-09-15
- 执行用时:44ms
- 内存消耗:21.7MB
- 编程语言:cpp
- 解法介绍:方向数组遍历。
class Solution {
public:
int giveGem(vector<int>& gem, vector<vector<int>>& operations) {
for (auto &item : operations) {
gem[item[1]] += gem[item[0]] / 2;
gem[item[0]] -= gem[item[0]] / 2;
}
return *max_element(gem.begin(), gem.end()) - *min_element(gem.begin(), gem.end());
}
};
题解 2 - python
- 编辑时间:2023-09-15
- 执行用时:60ms
- 内存消耗:17.7MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def giveGem(self, gem: List[int], operations: List[List[int]]) -> int:
for [i1, i2] in operations:
gem[i2] += gem[i1] // 2
gem[i1] -= gem[i1] // 2
return max(gem) - min(gem)
题解 3 - rust
- 编辑时间:2023-09-15
- 执行用时:4ms
- 内存消耗:2.3MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
pub fn give_gem(mut gem: Vec<i32>, operations: Vec<Vec<i32>>) -> i32 {
for item in operations {
gem[item[1] as usize] += gem[item[0] as usize] / 2;
gem[item[0] as usize] -= gem[item[0] as usize] / 2;
}
*gem.iter().max() - *gem.iter().min()
}
}