跳到主要内容

1921.消灭怪物的最大数量

链接:1921.消灭怪物的最大数量
难度:Medium
标签:贪心、数组、排序
简介:返回在你输掉游戏前可以消灭的怪物的 最大 数量。

题解 1 - cpp

  • 编辑时间:2023-09-03
  • 执行用时:104ms
  • 内存消耗:86.8MB
  • 编程语言:cpp
  • 解法介绍:排序。
class Solution {
public:
int eliminateMaximum(vector<int>& dist, vector<int>& speed) {
vector<double> arr;
for (int i = 0; i < dist.size(); i++) arr.push_back(1.0 * dist[i] / speed[i]);
sort(arr.begin(), arr.end());
for (int i = 0; i < dist.size(); i++) {
if (i >= arr[i]) return i;
}
return dist.size();
}
};

题解 2 - python

  • 编辑时间:2023-09-03
  • 执行用时:168ms
  • 内存消耗:30.3MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def eliminateMaximum(self, dist: List[int], speed: List[int]) -> int:
arr = [dist[i] / speed[i] for i in range(len(dist))]
arr.sort()
for i in range(len(dist)):
if i >= arr[i]: return i
return len(dist)

题解 3 - rust

  • 编辑时间:2023-09-03
  • 执行用时:32ms
  • 内存消耗:4.1MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn eliminate_maximum(dist: Vec<i32>, speed: Vec<i32>) -> i32 {
let mut arr = vec![];
for i in 0..dist.len() {
arr.push(dist[i] as f64 / speed[i] as f64);
}
arr.sort_by(|a, b| a.partial_cmp(b).unwrap());
for i in 0..dist.len() {
if i as f64 >= arr[i] {
return i as i32;
}
}
dist.len() as i32
}
}