• LeetCode 223. Rectangle Area


    原题链接在这里:https://leetcode.com/problems/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

    Example:

    Input: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2
    Output: 45

    Note:

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

    题解:

    方块1面积 + 方块2面积 - 重叠面积

    Note: 算重叠的面积时会有overflow, Math.min(C,G) 之前必须加 cast, e.g Math.min(C,G) = -150000001, Math.max(A,E) = 150000000.

    原来写(long)(Math.min(C,G) - Math.max(A,E))会报错是因为Math.min(C,G)和Math.max(A,E)都是 Integer, 所以cast之前的结果会default成Integer, 还是会有overflow.

    Time Complexity: O(1).

    Space: O(1).

    AC Java:

     1 public class Solution {
     2     public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
     3         int area1 = (C-A)*(D-B);
     4         int area2 = (G-E)*(H-F);
     5         
     6         long width = Math.max((long)Math.min(C,G) - (long)Math.max(A,E), 0);
     7         long hight = Math.max((long)Math.min(D,H) - (long)Math.max(B,F), 0);
     8         int overflow = (int)(width*hight);
     9         
    10         return area1+area2-overflow;
    11     }
    12 }

    Could avoid overflow as well.

    Time Complexity: O(1).

    Space: O(1).

    AC Java: 

     1 class Solution {
     2     public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
     3         return area(A, B, C, D) + area(E, F, G, H) - area(Math.max(A, E), Math.max(B, F), Math.min(C, G), Math.min(D, H));
     4     }
     5     
     6     private int area(int a, int b, int c, int d){
     7         if(a >= c || b >= d){
     8             return 0;
     9         }
    10         
    11         return (c - a) * (d - b); 
    12     }
    13 }
  • 相关阅读:
    [Linux起步]常用命令
    Eclipse被SD杂志评为最佳开源工具
    [一点一滴学英语]20050921
    [一点一滴学英语]20050920
    [一点一滴学英语]20050919
    Longhorn (Vista) 推迟发布的背后
    最快速度找到内存泄漏
    重载(overload)、覆盖(override)、隐藏(hide) 详解
    HTTP请求和响应格式
    Skia之四——SkGradientShader篇
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/4825039.html
Copyright © 2020-2023  润新知