593. Valid Square

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

Note:

All the input integers are in the range [-10000, 10000].
A valid square has four equal sides with positive length and four equal angles (90-degree angles).
Input points have no order.
java

import java.util.*;
class Solution {
    public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
        
        int[] lengths = new int[]{findDistance(p1, p2), findDistance(p1, p3), findDistance(p1, p4), findDistance(p2, p3),
                                 findDistance(p2, p4), findDistance(p3, p4)};
        Arrays.sort(lengths);
        boolean isSquare = lengths[0] == lengths[1] && lengths[1] == lengths[2] && lengths[2] == lengths[3] && lengths[4] == lengths[5];
        return isSquare && !(lengths[0] == 0);
    }
    
    private int findDistance(int[] p, int[] q) {
         return (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1]);
    }
}

python

class Solution:
    def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool:
        def dist(a, b):
            return (a[0] - b[0])**2+(a[1]-b[1])**2
        p1, p2, p3, p4 = tuple(sorted([p1, p2, p3, p4]))
        if p1 == p2 or p2==p3 or p3==p4:
            return False        
        return dist(p1, p2) == dist(p1, p3) and dist(p2, p4) == dist(p3, p4) and dist(p1, p4) == dist(p2, p3)
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值