当前位置:网站首页>力扣解法汇总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;
}
}边栏推荐
- mdnice-test
- 相亲信息
- The Ministry of Human Resources and Social Security announced that "database operation administrator" has become a new occupation, and OceanBase participated in the formulation of occupational standar
- 微信小程序 30 自定义模板和获取用户登录凭证
- 阿里 P8 爆出的这份大厂面试指南,看完工资暴涨 30k!
- 940. Different subsequences II
- leetcode122. Best Time to Buy and Sell Stock II
- 基于PaddleSpeech搭建个人语音听写服务
- Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?
- [Database] mysql date format conversion
猜你喜欢

Official announcement!Suzhou Wujiang Development Zone launches electronic labor contract platform

First thoughts on the first attempt to avoid killing without a file (Part 1)

解决报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

全景教程丨VR全景拍摄如何拍摄日出和日落的场景?

酷客导航助你商场轻松购物,业务办理不迷茫

分析少年派2中的Crypto

Huawei Enjoy 50 Pro evaluation: HarmonyOS blessing is smoother and safer

APM电机输出逻辑(Motors类详解)

OneNote 教程,如何在 OneNote 中做笔记?

VSCode 插件大全
随机推荐
关于 golang 错误处理的一些优化想法
sizeof和strlen的区别(strlen和sizeof的用法)
【无标题】
【593. 有效的正方形】
APM电机输出逻辑(Motors类详解)
网站ping端口的操作方法和命令介绍
亚马逊登录参数metadata1,encryptedPwd逆向分析
WeChat Mini Program 30 Customizing Templates and Obtaining User Login Credentials
在Ferora35中安装oracle-database-xe-21c
容器网络硬核技术内幕 (25) 知微知彰,知柔知刚 (中)
Qualcomm WLAN framework learning (31) -- Power save
品牌广告投放平台的中台化应用与实践
南信大提出TIPCB,一个简单但有效的用于基于文本的人员搜索的基于部分的卷积baseline
JS教程之 ElectronJS 自定义标题栏
获取七牛云地址文件保存到本地
linux install redis using script
[Database] mysql date format conversion
SwiftUI 手势大全之可用的手势类型有哪些(教程含源码)
解决reudx中的异步问题 applyMiddleware thunk
一文理解分布式开发中的服务治理