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

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

示例:

输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
输出: True

注意:

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

class Solution {
public:
    bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
        unordered_map<int, int> m;
        vector<vector<int>> v{p1, p2, p3, p4};
        for (int i = 0; i < 4; ++i) {
            for (int j = i + 1; j < 4; ++j) {
                int x1 = v[i][0], y1 = v[i][1], x2 = v[j][0], y2 = v[j][1];
                int dist = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
                if (dist == 0) return false;
                ++m[dist];
            }
        }
        return m.size() == 2;
    }
};

593. 有效的正方形相关推荐

  1. LeetCode - 593 有效的正方形

    目录 题目来源 题目描述 示例 提示 题目解析 算法源码 数学公式求解 题目来源 593. 有效的正方形 - 力扣(LeetCode) 题目描述 给定2D空间中四个点的坐标 p1, p2, p3 和  ...

  2. leetcode 593. Valid Square | 593. 有效的正方形(Java)

    题目 https://leetcode.com/problems/valid-square/ 题解 因为顺序未知,所以可能有四种组合情况.(check时,以四个点顺时针排列为待判断的正方形) clas ...

  3. LeetCode 593. 有效的正方形(数学)

    1. 题目 给定二维空间中四点的坐标,返回四点是否可以构造一个正方形. 一个点的坐标(x,y)由一个有两个整数的整数数组表示. 示例: 输入: p1 = [0,0], p2 = [1,1], p3 = ...

  4. 【593. 有效的正方形】

    来源:力扣(LeetCode) 描述: 给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true . 点的坐标 pi 表示为 [xi, yi] .输入 ...

  5. LeetCode 593. 有效的正方形

    解题思路: 数学方法 正方形判定定理 正方形判定定理是几何学里用于判定一个四边形是否为正方形的判定定理.判别正方形的一般顺序为先说明它是平行四边形:再说明它是菱形(或矩形):最后说明它是矩形(或菱形) ...

  6. C#刷遍Leetcode面试题系列连载(6):No.372 - 超级次方

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工 ...

  7. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 (a ...

  8. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  9. leetcode算法练习 JavaScript实现

    leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...

  10. 【LeetCode】2022 7月 每日一题

    [LeetCode]2022 7月 每日一题 前言 七月太忙了,又是项目又是练车又是各种比赛.大概有10天的每日一题没有当天写完(虽然后面补上了). 将每日一题的所有思路记录在这里分享一下. 7.1 ...

最新文章

  1. Win32开发之Format MessageBox 详解
  2. To-do-List
  3. win10分屏快捷键无法使用_你知道哪些关于win10的快捷操作
  4. 【Python】Autoviz: 一行代码搞定数据集探索并可视化
  5. 北邮OJ 2016网预 - Saber's Conjecture
  6. 逾期后还能消除不良记录吗?
  7. 《C++ Primer》13.1.6节练习(部分)
  8. Kadane's algorithm学习
  9. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化
  10. 一行语句让你的浏览器变成记事本
  11. CSDN博客PDF格式文件导出【转载】
  12. J2EE五层架构概念[转+整理]
  13. git小乌龟新建分支、合并分支
  14. java messagedigest_Java MessageDigest toString()用法及代码示例
  15. 东芝 rc100 linux,东芝RC100固态硬盘固件更新提示
  16. CSS设置字间距、行间距、首行缩进
  17. Mysql优势和特点
  18. 第69天-内网安全-域横向 CobaltStrikeSPNRDP
  19. Redis 学习 - 05 Node.js 客户端操作 Redis、Pipeline 流水线
  20. java服务器端集成微信小程序

热门文章

  1. django获取客户ip
  2. POJ-2031-Building a Space Station
  3. RH124 Chapter 2 Managing Files From the Command Line
  4. InnoSetup 如何获取安装程序的路径?
  5. 云集新功能:移动 Web 调试从未变得如此简单
  6. jQuery 2.0.3 源码分析Sizzle引擎 - 编译函数(大篇幅)
  7. 关于Jquery ajax调用一般处理程序Handler报500 错误(Internal Server Error)解决办法
  8. Effective Java 学习笔记之二
  9. 使用Sphinx对MySQL数据库进行全文检索
  10. Spring的bean管理(注解注入属性)