leetcode 223

题目链接:

Rectangle Area

整体思想:

给定两个矩形,左上角和右上角点的坐标已经给定。求这两个矩形覆盖的面积。分两种情况,一种是两个矩形不相交,则
覆盖面积为两个矩形的面积和,另一种情况是两个矩形相交,则所求面积为两个矩形面积的和减去相交的面积,这里要注
意一个矩形可能为一个点,或者一条直线,要特殊判断一下。

参考代码:

public class Solution {
    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        //两个矩形不相交,或者有矩形是一条直线或一个点
        int total = (C - A) * (D - B) + (G - E) * (H - F);
        if(E >= C || A >= G || B >= H || F >= D || A == C || B == D || E == G || F == H){
            return total;
        }
        //总面积-交叉的面积(交叉面积的长等于小的右边界-大的左边界, 宽等于小的上边界-大的下边界)
        return total - (Math.min(C, G) - Math.max(A, E)) * (Math.min(D, H) - Math.max(B, F));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值