当前位置:网站首页>力扣解法汇总593-有效的正方形
力扣解法汇总593-有效的正方形
2022-07-29 21:18:00 【失落夏天】
目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:
力扣
描述:
给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true 。
点的坐标 pi 表示为 [xi, yi] 。输入 不是 按任何顺序给出的。
一个 有效的正方形 有四条等边和四个等角(90度角)。
示例 1:
输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
输出: True
示例 2:
输入:p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,12]
输出:false
示例 3:
输入:p1 = [1,0], p2 = [-1,0], p3 = [0,1], p4 = [0,-1]
输出:true
提示:
p1.length == p2.length == p3.length == p4.length == 2
-104 <= xi, yi <= 104
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
* 解题思路: * 是否是有效的正方形,我们可以判断4个点相互连接,共有六条线,这六条线中4个短的是否相等以及2个长的是否相等即可。 * 因为求平方根有可能产生精度问题,所以我们直接使用平方。
代码:
public class Solution593 {
public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
List<int[]> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
TreeMap<Integer, Integer> numMap = new TreeMap<>();
for (int i = 0; i < list.size(); i++) {
for (int j = i + 1; j < list.size(); j++) {
int[] pp1 = list.get(i);
int[] pp2 = list.get(j);
int s = (int) (Math.pow(pp1[0] - pp2[0], 2.0) + Math.pow(pp1[1] - pp2[1], 2.0));
numMap.put(s, numMap.getOrDefault(s, 0) + 1);
}
}
if (numMap.size() != 2) {
return false;
}
Collection<Integer> values = numMap.values();
Iterator<Integer> iterator = values.iterator();
Integer next1 = iterator.next();
Integer next2 = iterator.next();
return next1 == 4 && next2 == 2;
}
}
边栏推荐
- HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
- 容器网络硬核技术内幕 (24) 知微知彰,知柔知刚 (上)
- 第3章业务功能开发(线索关联市场活动,动态搜索)
- Chrome浏览器打印flash log
- 336. Palindromic Pairs
- 4. Implementation Guide for GET_ENTITYSET Method of SAP ABAP OData Service Data Provider Class
- 爽朗的一天
- 小程序预览pdf
- 转:idea中language level设置
- Dry goods!Cooperative Balance in Federated Learning
猜你喜欢
MySQL数据查询 - 简单查询
How to implement your personal knowledge base?
Numpy数组处理(二)
leetcode-593:有效的正方形
Fully automated machine learning modeling!The effect hangs the primary alchemist!
一文理解分布式开发中的服务治理
Qualcomm WLAN framework learning (31) -- Power save
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
微信小程序 30 自定义模板和获取用户登录凭证
WeChat Mini Program 31 Subcontracting Mechanism
随机推荐
Fully automated machine learning modeling!The effect hangs the primary alchemist!
对不起,你很难赚到中年人的钱
小程序预览pdf
针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
容器网络硬核技术内幕 (25) 知微知彰,知柔知刚 (中)
golang文件行号探索
使用脚本安装mysql
【CVPR2022】A Unified Query-based Paradigm for Point Cloud Understanding
24-hour London gold chart analysis
全景教程丨VR全景拍摄如何拍摄日出和日落的场景?
一 JS中Promise用法、二闭包的概念与用法、三对象创建的四种方式与区区别、四 如何声明一个类
网站ping端口的操作方法和命令介绍
一文理解分布式开发中的服务治理
分析少年派2中的Crypto
leetcode122. Best Time to Buy and Sell Stock II
《张卫国的夏天》欢乐来袭,黄磊、刘奕君携手演绎“冤种”兄弟
全自动化机器学习建模!效果吊打初级炼丹师!
Analysis of Crypto in Pi 2
Use the PostgreSQL GRANT command to modify permissions on various database objects
[ACTF2020 Freshman Competition]Exec 1