leetcode-593. Valid Square-java

Given the coordinates of four points in 2D space, return whether the four points could construct a square.

The coordinate (x,y) of a point is represented by an integer array with two integers.

Example:

Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
Output: True

描述:给四个坐标,判断是否能组成一个正方形
题目的难点在于我们不知道给定的四个坐标的相对位置,在确定了位置之后我们还需判断两点连成的四条边是否相等,以及两对对角的两个点所连成的线是否相等,保证图形是一个正方形,因为四条边相等也有可能是菱形。

public class ValidSquare {
    public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
        int[][] p = {p1, p2, p3, p4};
        //根据X坐标大小和Y轴坐标大小作比较进行排序,保证0,3、1,2是对角
        Arrays.sort(p, (l1, l2) -> l1[0] == l2[0] ? l1[1] - l2[1] : l1[0] - l2[0]);
        return dist(p[0], p[1]) > 0 && dist(p[0], p[1]) == dist(p[1], p[2]) && dist(p[2], p[3]) == dist(p[3], p[0])
                && dist(p[1], p[2]) == dist(p[2], p[3]) && dist(p[0],p[3]) == dist(p[1],p[2]);
    }

    public double dist(int[] p1, int[] p2) {
        return (p2[0] - p1[0]) * (p2[0] - p1[0]) + (p2[1] - p1[1]) * (p2[1] - p1[1]);
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值