糖逗 发表于 2020-7-2 10:53:28

C++刷LeetCode(593. 有效的正方形)【数学】

题目描述:
给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

一个点的坐标(x,y)由一个有两个整数的整数数组表示。

示例:

输入: p1 = , p2 = , p3 = , p4 =
输出: True
 

注意:

所有输入整数都在 [-10000,10000] 范围内。
一个有效的正方形有四个等长的正长和四个等角(90度角)。
输入点没有顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


class Solution {
public:
    bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
      int p12 = pow((p1-p2),2) + pow((p1-p2),2);
      int p13 = pow((p1-p3),2) + pow((p1-p3),2);
      int p14 = pow((p1-p4),2) + pow((p1-p4),2);
      int p24 = pow((p2-p4),2) + pow((p2-p4),2);
      int p34 = pow((p3-p4),2) + pow((p3-p4),2);
      int p23 = pow((p2-p3),2) + pow((p2-p3),2);
      if(p12 == 0 || p13 == 0 || p14 == 0 || p23 == 0 || p24 == 0 || p34 == 0) return false;
      if(p12==p13 && p24==p34 && 2*p13==p23 && p23==p14 || p12==p14 && p23==p34 && 2*p14==p24 && p24==p13 || p13==p14 && p23==p24 && 2*p14==p34 && p34==p12)return true;
      return false;      
    }
};


参考链接:https://leetcode-cn.com/problems/valid-square/solution/zheng-fang-xing-pan-ding-ding-li-by-dai-xi-er-gu-2/
页: [1]
查看完整版本: C++刷LeetCode(593. 有效的正方形)【数学】