跳到主要内容

593.有效的正方形

链接:593.有效的正方形
难度:Medium
标签:几何、数学
简介:给定 2D 空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true 。

题解 1 - rust

  • 编辑时间:2022-07-29
  • 内存消耗:2.1MB
  • 编程语言:rust
  • 解法介绍:每条边都相等且任意三个角都能组成直角三角形。
impl Solution {
pub fn valid_square(p1: Vec<i32>, p2: Vec<i32>, p3: Vec<i32>, p4: Vec<i32>) -> bool {
Solution::is_right_triangle(&p1, &p2, &p3)
&& Solution::is_right_triangle(&p1, &p2, &p4)
&& Solution::is_right_triangle(&p1, &p3, &p4)
&& Solution::is_right_triangle(&p2, &p3, &p4)
}
fn is_right_triangle(p1: &Vec<i32>, p2: &Vec<i32>, p3: &Vec<i32>) -> bool {
let d1 = Solution::get_length(p1, p2);
let d2 = Solution::get_length(p1, p3);
let d3 = Solution::get_length(p3, p2);
d1 != 0
&& d2 != 0
&& d3 != 0
&& (d1 + d2 == d3 && d1 == d2 || d1 + d3 == d2 && d1 == d3 || d2 + d3 == d1 && d2 == d3)
}
fn get_length(p1: &Vec<i32>, p2: &Vec<i32>) -> i32 {
(p1[0] - p2[0]).pow(2) + (p1[1] - p2[1]).pow(2)
}
}