程式語言 - LeetCode - C++ - 593. Valid Square



題目:


方法:

d[0] d[1] d[2] d[3]  -> 四條邊
d[4] d[5]            -> 兩條對角線

解答:

class Solution {
public:
    bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
        function<int(vector<int>&, vector<int>&)> d = [](vector<int>& a, vector<int>& b) -> int {
            int ax = a[0] - b[0];
            int ay = a[1] - b[1];

            return ax * ax + ay * ay;
        };

        vector<int> p;

        p.push_back(d(p1, p2));
        p.push_back(d(p1, p3));
        p.push_back(d(p1, p4));
        p.push_back(d(p2, p3));
        p.push_back(d(p2, p4));
        p.push_back(d(p3, p4));

        sort(p.begin(), p.end());

        return p[0] > 0 &&
            p[0] == p[1] &&
            p[1] == p[2] &&
            p[2] == p[3] &&
            p[4] == p[5];
    }
};