当前位置: 首页 > news >正文

Java | Leetcode Java题解之第391题完美矩形

题目:

题解:

class Solution {public boolean isRectangleCover(int[][] rectangles) {long area = 0;int minX = rectangles[0][0], minY = rectangles[0][1], maxX = rectangles[0][2], maxY = rectangles[0][3];Map<Point, Integer> cnt = new HashMap<Point, Integer>();for (int[] rect : rectangles) {int x = rect[0], y = rect[1], a = rect[2], b = rect[3];area += (long) (a - x) * (b - y);minX = Math.min(minX, x);minY = Math.min(minY, y);maxX = Math.max(maxX, a);maxY = Math.max(maxY, b);Point point1 = new Point(x, y);Point point2 = new Point(x, b);Point point3 = new Point(a, y);Point point4 = new Point(a, b);cnt.put(point1, cnt.getOrDefault(point1, 0) + 1);cnt.put(point2, cnt.getOrDefault(point2, 0) + 1);cnt.put(point3, cnt.getOrDefault(point3, 0) + 1);cnt.put(point4, cnt.getOrDefault(point4, 0) + 1);}Point pointMinMin = new Point(minX, minY);Point pointMinMax = new Point(minX, maxY);Point pointMaxMin = new Point(maxX, minY);Point pointMaxMax = new Point(maxX, maxY);if (area != (long) (maxX - minX) * (maxY - minY) || cnt.getOrDefault(pointMinMin, 0) != 1 || cnt.getOrDefault(pointMinMax, 0) != 1 || cnt.getOrDefault(pointMaxMin, 0) != 1 || cnt.getOrDefault(pointMaxMax, 0) != 1) {return false;}cnt.remove(pointMinMin);cnt.remove(pointMinMax);cnt.remove(pointMaxMin);cnt.remove(pointMaxMax);for (Map.Entry<Point, Integer> entry : cnt.entrySet()) {int value = entry.getValue();if (value != 2 && value != 4) {return false;}}return true;}
}class Point {int x;int y;public Point(int x, int y) {this.x = x;this.y = y;}@Overridepublic int hashCode() {return x + y;}@Overridepublic boolean equals(Object obj) {if (obj instanceof Point) {Point point2 = (Point) obj;return this.x == point2.x && this.y == point2.y;}return false;}
}
http://www.lryc.cn/news/437249.html

相关文章:

  • java项目之基于web的人力资源管理系统的设计与实现(源码+文档)
  • Linux 防火墙:iptables (二)
  • 小目标检测顶会新思路!最新成果刷爆遥感SOTA,参数小了18倍
  • 【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)
  • 免费的成绩查询微信小程序,让家长轻松掌握学生表现
  • [含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)
  • 如何把我另一个分支上的commit拿过来
  • 【rpg像素角色】俯视角-行走动画
  • Python时间序列分析新技能,轻松掌握时间索引
  • sklearn-逻辑回归-特征工程示例
  • RTMP播放器延迟最低可以做到多少?
  • 细致刨析JDBC ① 基础篇
  • Reactive 编程-Loom 项目(虚拟线程)
  • Windows下使用MinGW编译安装zmq的步骤
  • 电商云账户分账系统:打造高效资金流转体系
  • 设计模式 -- 单例设计模式
  • python fastapi 打包exe
  • 【测试开岗面试】知识点总结
  • 【高级编程】synchronized 解决并发问题 类的线程安全类型
  • Speculative RAG:为知识密集型数据服务的RAG
  • [Go]-抢购类业务方案
  • Android 源码多个Launcher设置默认Launcher
  • 计算机毕业设计 网上体育商城系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 深度学习中实验、观察与思考的方法与技巧
  • 记一次 FastDFS 存储节点迁移:基于 scp 的实践与经验分享
  • http连接github远程仓库密码问题解决办法
  • LAMP环境下项目部署
  • Visual Studio 2022从外部引入dll导致的问题
  • 大模型从失败中学习 —— 微调大模型以提升Agent性能
  • 10.web应用体系以及windows网络常见操作应用