[路飞]_Leetcode 593. 有效的正方形

537 阅读2分钟

「携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

今天我们来做一下今天的leetcode 每日一题,是一道几何数学题

image.png

题目链接在这里 593. 有效的正方形

题意

题目大意是在二维坐标系中给了我们四个点,让我们判断这四个点能不能构成正方形。而且,四个点不是有序的,也就是说,不是按照正方形的四个点顺次给到的,可能给到的相邻两个点将来是正方形的对角线。

思路

  • 在坐标系中计算两个点之间的距离很容易,而且如果两点之间的距离的平方确定了,这段距离也确定了,所以这里我们可以直接只计算两点之间距离的平方。

  • 紧接着,我们计算12 23 34 41 13 24 这六对点的距离,因为四个点之间最多只有这六根连线。

image.png

  • 根据正方形的特性,我们可以知道上面的6段连线中,必然有四条边相等,剩下的两条对角线相等,那么如何知道那些是边那些是对角线呢?
  • 因为正方形中对角线大于边长,所以我们可以对6条边进行长度排序,那么可以确定前四条一定是边,后2条是对角线。 -剩下的只需要判断前四条边彼此相等,剩下两条边相等即可
  • 另外,需要加一个条件:边长>0 , 因为测试用例中存在点重复的情况,这会导致边长为0

代码实现

按照上面的思路就可以进行代码实现了

image.png

结束语

这道题我一上来其实也没有做出来,这个思路也是借鉴leetcode中的一个题解的,不过谁说读懂了一个题解不算做出来了一道题呢?

如果有更好的分析思路,欢迎大家在评论区发表看法!⛄