跳到主要内容

1637.两点之间不包含任何点的最宽垂直区域

链接:1637.两点之间不包含任何点的最宽垂直区域
难度:Easy
标签:数组、排序
简介:给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。

题解 1 - cpp

  • 编辑时间:2023-03-30
  • 执行用时:272ms
  • 内存消耗:79.3MB
  • 编程语言:cpp
  • 解法介绍:Tree排序。
class Solution {
public:
int maxWidthOfVerticalArea(vector<vector<int>>& points) {
set<int> s;
for (auto &p : points) s.insert(p[0]);
auto it = s.begin();
int res = 0, prev = *it;
while (it != s.end()) res = max(res, *it - prev), prev = *it, it++;
return res;
}
};

题解 2 - cpp

  • 编辑时间:2023-03-30
  • 执行用时:280ms
  • 内存消耗:64.7MB
  • 编程语言:cpp
  • 解法介绍:排序。
class Solution {
public:
int maxWidthOfVerticalArea(vector<vector<int>>& points) {
sort(points.begin(), points.end(), [&](auto &a, auto &b){
return a[0] < b[0];
});
int res = 0;
for (int i = 1; i < points.size(); i++) {
if (points[i][0] != points[i - 1][0]) {
res = max(res, points[i][0] - points[i - 1][0]);
}
}
return res;
}
};

题解 3 - python

  • 编辑时间:2023-03-30
  • 执行用时:240ms
  • 内存消耗:45.1MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def maxWidthOfVerticalArea(self, points: List[List[int]]) -> int:
points.sort(key=lambda p: p[0])
res = 0
for i in range(1, len(points)):
if points[i][0] != points[i - 1][0]:
res = max(res, points[i][0] - points[i - 1][0])
return res

题解 4 - rust

  • 编辑时间:2023-03-30
  • 执行用时:36ms
  • 内存消耗:9.3MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn max_width_of_vertical_area(mut points: Vec<Vec<i32>>) -> i32 {
points.sort_by_key(|p| p[0]);
let mut res = 0;
for i in 1..points.len() {
if (points[i][0] != points[i - 1][0]) {
res = res.max(points[i][0] - points[i - 1][0]);
}
}
res
}
}