365天挑战LeetCode1000题——Day 043 有效的正方形 数学

593. 有效的正方形

在这里插入图片描述

代码实现(自解)

class Solution {
private:
	const double epsilon = 0.00001;
public:
    bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
        if (p1 == p2 || p2 == p3 || p3 == p4) return false;
        double p1p2 = sqrt(pow(p1[0] - p2[0], 2) + pow(p1[1] - p2[1], 2));
        double p1p3 = sqrt(pow(p1[0] - p3[0], 2) + pow(p1[1] - p3[1], 2));
        double p1p4 = sqrt(pow(p1[0] - p4[0], 2) + pow(p1[1] - p4[1], 2));
        double p2p3 = sqrt(pow(p2[0] - p3[0], 2) + pow(p2[1] - p3[1], 2));
        double p2p4 = sqrt(pow(p2[0] - p4[0], 2) + pow(p2[1] - p4[1], 2));
        double p3p4 = sqrt(pow(p3[0] - p4[0], 2) + pow(p3[1] - p4[1], 2));
		// p1,p2 is against
		if (p1p3 == p1p4 && p2p3 == p2p4 && p1p3 == p2p3) {
			return abs(p1p3 * sqrt(2) - p1p2) <= epsilon;
		}
		// p1, p3 is against
		if (p1p2 == p1p4 && p2p3 == p3p4 && p1p2 == p2p3) {
			return abs(p1p2 * sqrt(2) - p1p3) <= epsilon;
		}
		// p1,p4 is against 
		if (p1p2 == p1p3 && p2p4 == p3p4 && p1p2 == p2p4) {
        	return abs(p1p2 * sqrt(2) - p1p4) <= epsilon;
		}
		return false;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值