Leetcode 223. 矩形面积 解题思路及C++实现

解题思路:

着重研究一下矩形四个顶点坐标的大小关系。

if 条件语句中判断是否出现不重叠的情况。

当出现重叠时,需要找出重叠矩形的四个顶点坐标:在小的横坐标中找出更大者,就是重叠矩形中较大的横坐标值 x1,在大的横坐标中找出更小者,就是重叠矩形中较小的横坐标值 x2。重叠矩形的纵坐标也同理可得。

 

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);
        int area2 = (G - E) * (H - F);
        if(C < E || A > G || B > H || D < F) return area1 + area2;
        else{
            int x1 = min(C, G);  // 大的横坐标中谁更小
            int x2 = max(A, E);  // 小的横坐标中谁更大
            int y1 = min(D, H);
            int y2 = max(B, F);
            
            return area1 - (x1 - x2) * (y1 - y2) + area2;
        }
    }
};

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值