zoukankan      html  css  js  c++  java
  • LeetCode-Rectangle Area

    Find the total area covered by two rectilinear rectangles in a 2D plane.

    Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.

    Rectangle Area

    Assume that the total area is never beyond the maximum possible value of int.

    Credits:
    Special thanks to @mithmatt for adding this problem, creating the above image and all test cases.

     
     Analysis:
    Area = area1 + area2 - overlap. To find out overlapped area, we decompose the matrix into x dimension and y dimension; we then find out the overlapped interval in x&y diemension respectively, which are the four lines constructing the overlapped rectangle.
     
    Solution:
    public 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);
            int overlap = 0;
            
            if (E<C && A<G && F<D && B<H){
                int left = Math.max(A,E);
                int right = Math.min(C,G);
                int up = Math.min(D,H);
                int bottom = Math.max(B,F);
                overlap = (right-left) * (up-bottom);
            }
            return area1+area2-overlap;
        }
    }
  • 相关阅读:
    LINQ中selectManay操作符(五)
    LINQ中select操作符(四)
    高效并发进阶-白银
    JVM回收算法
    一个类是怎么被JVM执行的
    一纸理解JVM
    单例模式
    深入理解Spring AOP思想
    深入理解Spring IOC工作原理
    HashMap扩容全过程
  • 原文地址:https://www.cnblogs.com/lishiblog/p/5858754.html
Copyright © 2011-2022 走看看