美文网首页
算法分享

算法分享

作者: 刘智超 | 来源:发表于2020-09-20 17:17 被阅读0次

    在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。

    每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

    输入: -3, 0, 3, 4, 0, -1, 9, 2

    输出: 45

    说明: 假设矩形面积不会超出 int 的范围。‘

    仔细分析,通过数学公式进行计算,可以看出H-B等于第一个矩形加第二个矩形得边相加再减去一个重叠得长度,因此可以计算出重叠长度,同理重叠得面积可以算出

    具体代码

    ```java

    class Solution {

        public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {

            int are=0;

    if((D-B)*(C-A)==0)return are =(G-E)*(H-F);

    if((G-E)*(H-F)==0)return are=(D-B)*(C-A);

    if(A>=G||E>=C||B>=H||F>=D){

    are = (D-B)*(C-A)+(G-E)*(H-F);

    return are;}

    int max=0;

    int max1=0;

    if(E>=A&&G>C){max=G-A;}

    if(E>=A&&G<=C)max=C-A;

    if(E<A&&G<=C)max=C-E;

    if(E<A&&G>C)max=G-E;

    if(B>=F&&H<D)max1=D-F;

    if(B>=F&&H>=D)max1=H-F;

    if(B<F&&H<D)max1=D-B;

    if(B<F&&H>=D)max1=H-B;

    are = (D-B)*(C-A)+(G-E)*(H-F)-(D-B+H-F-max1)*(C-A+G-E-max);

    return are;

        }

    }

    ```

    相关文章

      网友评论

          本文标题:算法分享

          本文链接:https://www.haomeiwen.com/subject/kolpyktx.html