博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----223. Rectangle Area
阅读量:4113 次
发布时间:2019-05-25

本文共 1173 字,大约阅读时间需要 3 分钟。

链接:

大意:

分别给定两个矩形的左下角顶点坐标和右下角顶点坐标,格式为:

对于矩形1:左下角顶点为(A,B),右上角顶点为(C,D)

对于矩形2:左下角顶点为(E,F),右上角顶点为(G,H)

求两个矩形的所覆盖的总面积。

例子:

思路:

对两个矩形的关系分情况套路。

情况一:两个矩形没有重叠部分,则返回两个矩形的面积之和

情况二:两个矩形是包围关系,则返回面积较大矩形的面积

情况三:两个矩形是非包围的重叠关系,则返回面积为两个矩形的面积之和减去两个矩形重叠区域的面积。

而关于重叠区域的面积计算,是等于(x[2] - x[1]) * (y[2] - y[1]) 。其中x[i],y[i]为分别把四个坐标值按从小到大排序后的对应位置的数(查看例子图,看看重叠区域的横纵坐标分别是什么)

代码:

class Solution {    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {        int area1 = (C - A) * (D - B), area2 = (G - E) * (H - F);        // 没有重叠部分        if (H <= B || D <= F || E >= C || A >= G)            return area1 + area2;        // 包围关系        if (E <= A && F <= B && G >= C && H >= D || E >= A && F >= B && G <= C && H <= D)            return Math.max(area1, area2);        // 非包围关系的重叠关系        // 面积等于两个长方形的面积之和减去重叠部分的面积 重叠部分的矩形的面积等于对x轴坐标以及y坐标排序后的 (x[2] - x[1]) * (y[2] - y[1])        int[] x = new int[4], y = new int[4];        x[0] = A;x[1] = C;x[2] = E;x[3] = G;        y[0] = B;y[1] = D;y[2] = F;y[3] = H;        Arrays.sort(x);Arrays.sort(y);        return area1 + area2 - (x[2] - x[1]) * (y[2] - y[1]);    }}

结果:

结论:

一开始确实有点没头绪(或者说有头绪,但不知道怎么计算重叠区域的面积,还是太傻。。。)

考的就是一个逻辑思路。 

 

 

转载地址:http://taesi.baihongyu.com/

你可能感兴趣的文章
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>