当前位置: 首页 > 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.mrgr.cn/news/21860.html

相关文章:

  • 华为-2017-测试工程师笔试试卷
  • Linux网络测试和故障排查命令
  • World of Warcraft [Warrior Freeblue][Hunter Grandel]
  • C# System.Linq提供类似SQL语法的高效查询操作
  • MySQL面试题大全和详解,含SQL例子
  • RISC-V (十二)系统调用
  • [Git使用] 实战技巧
  • C++ | Leetcode C++题解之第392题判断子序列
  • 模具要不要建设3D打印中心
  • C语言 | Leetcode C语言题解之第391题完美矩形
  • windows版本mysql8.2忘记密码
  • C/C++ 网络聊天室在线聊天系统(整理重传)
  • PromQL 语法
  • UML的图及其他图补充
  • App Store最低版本要求汇总
  • Nacos Config 配置中心支持配置共享
  • 代码编译过程详细解释
  • 9.8通宵速通javascript
  • 字符串中第一个唯一字符
  • 【编程底层原理】方法区、永久代和元空间之间的关系