简单求矩形面积
题目描述
给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。
每个矩形由其 左下 顶点和 右上 顶点坐标表示:
- 第一个矩形由其左下顶点
(ax1, ay1)
和右上顶点(ax2, ay2)
定义。 - 第二个矩形由其左下顶点
(bx1, by1)
和右上顶点(bx2, by2)
定义。
class Solution {
public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
// 求矩形1的面积
int area1 = (ax2-ax1)*(ay2-ay1);
// 求矩形2的面积
int area2 = (bx2 - bx1)*(by2 - by1);
// 求重叠部分的面积
// 重叠部分边界
int left = Math.max(ax1,bx1);
int top = Math.min(ay2,by2);
int right = Math.min(ax2,bx2);
int down = Math.max(ay1,by1);
int overlap = 0;
if(left<right&&down<top){
// 如果可以形成封闭图形
overlap = (right-left)*(top-down);
}
int sum = area1 + area2 - overlap;
return sum;
}
}
首先计算两个矩形的面积 ,然后计算重叠部分的边界。使用 Math.max
和 Math.min
函数找到重叠部分的左边界 left
、上边界 top
、右边界 right
和下边界 down
。
如果 left
小于 right
且 down
小于 top
,说明重叠部分可以形成一个封闭图形,此时计算重叠部分的面积 overlap
,公式为 (right - left) * (top - down)
。
最后,将两矩形的面积和重叠部分的面积相加,并返回结果。
生活总结
这周对大一进行了java基础考核,感觉成绩不是很理想,现在也算是明白了学长学姐的感受了,但这也是他们刚刚开始。对于我而言也要加快自己的脚步,紧紧跟着大部队,在项目和学习中不断完善自我,听学长说到了大三前端需要学习的地方更多,但现在基础都很薄弱的我就需要多多复习原来的知识,所以就给自己建立了一个小的计划:博客拯救计划
每周多抽出一点时间对原来的博客增加一些新的理解和补充,同时也算是复习知识,当然也想着去提高一下自己的阅读量。