矩形面积算法

简单求矩形面积

题目描述

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。

每个矩形由其 左下 顶点和 右上 顶点坐标表示:

  • 第一个矩形由其左下顶点 (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基础考核,感觉成绩不是很理想,现在也算是明白了学长学姐的感受了,但这也是他们刚刚开始。对于我而言也要加快自己的脚步,紧紧跟着大部队,在项目和学习中不断完善自我,听学长说到了大三前端需要学习的地方更多,但现在基础都很薄弱的我就需要多多复习原来的知识,所以就给自己建立了一个小的计划:博客拯救计划

每周多抽出一点时间对原来的博客增加一些新的理解和补充,同时也算是复习知识,当然也想着去提高一下自己的阅读量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值