本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46868363



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.

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

思路:

(1)题意为给定两个矩形的对角坐标,求解两矩形所形成的面积大小。

(2)该题比较简单,最开始对其进行分析时,考虑的比较复杂。考虑到两个矩形之间的关系无非包括三种:相离、相交、包含。对于相离,只需要判定其中一个矩形的横、纵坐标的最小值大于另一个的最大值即可;对于包含,只需判定其中一个矩形的两个顶点坐标范围是否在另一个矩形中即可;对于包含,稍微有一点复杂,包括其中一个矩形的一个顶点和两个顶点在另一个矩形中的情况。对于本题,则只需考虑上图所示的情况即可,相对比较简单,只需求出总面积,然后减去公共的面积,即为两矩形所形成的面积。

(3)详情见下方代码。希望本文对你有所帮助。

算法代码实现如下:

/**
 *
 * @author lqq
 *
 */
public class Rectangle_Area {

	public int computeArea(int A, int B, int C, int D, int E, int F, int G,int H) {
		//
		// //相离
		// if((E>=C || G<=A) && (H<=B || F>=D)){
		// int _area1 = (C-A>=0?(C-A):(A-C)) * (B-D>=0?(B-D):(D-B));
		// int _area2 = (G-E>=0?(G-D):(D-G)) * (H-F>=0?(H-F):(F-H));
		//
		// return _area1 + _area2;
		// }
		//
		// //包含
		// if((A<=E && E<=C && A<=G &&G<=C&&B<=F&&F<=D&&B<=H&&H<=D)){
		// int _area1 = (C-A>=0?(C-A):(A-C)) * (B-D>=0?(B-D):(D-B));
		// return _area1;
		// }else if((A>=E && E>=C && A>=G &&G>=C&&B>=F&&F>=D&&B>=H&&H>=D)){
		// int _area2 = (G-E>=0?(G-D):(D-G)) * (H-F>=0?(H-F):(F-H));
		// return _area2;
		// }
		//
		// //相交 分为一个点在里面和两个点在里面

		int area = (D - B) * (C - A) + (G - E) * (H - F); // 总面积

		int left = Math.max(A, E);
		int down = Math.max(B, F);

		int right = Math.min(G, C);
		int up = Math.min(D, H);

		if (up <= down || right <= left) {
			return area;
		}

		area = area - (right - left) * (up - down);

		return area;
	}
}

Leetcode_223_Rectangle Area的更多相关文章

  1. [转]NopCommerce How to add a menu item into the administration area from a plugin

    本文转自:http://docs.nopcommerce.com/display/nc/How+to+code+my+own+shipping+rate+computation+method Go t ...

  2. ASP.NET MVC系列:Area

    1. Area简介 ASP.NET MVC Area机制构建项目,可以将相对独立的功能模块切割划分,降低项目的耦合度. 2. Area设置Routing 新建Admin Area后,自动创建Admin ...

  3. Web API项目中使用Area对业务进行分类管理

    在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加 ...

  4. MVC View中获取action、controller、area名称

    获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); 获取Action名称: ViewContext.Ro ...

  5. [LeetCode] Rectangle Area 矩形面积

    Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...

  6. 如何在Linux上使用文件作为内存交换区(Swap Area)

    交换区域(Swap Area)有什么作用? 交换分区是操作系统在内存不足(或内存较低)时的一种补充.通俗的说,如果说内存是汽油,内存条就相当于油箱,交换区域则相当于备用油箱. Ubuntu Linux ...

  7. MVC 添加Area

    在MVC项目中经常会使用到Area来分开不同的模块让项目结构更加的清晰. 步骤如下: 项目 –> 添加 -> 区域 ( Area ) 输入 Admin 添加成功后 Area包含: 创建一个 ...

  8. ASP.NET MVC 设置Area中 Controller 的方法 默认启动页

    MVC中通常分区域编程,互不干扰,如果需要设置某个区域下面的某个控制器下面的某个方法为默认启动页的话,直接修改项目的路由如下: public static void RegisterRoutes(Ro ...

  9. [ASP.NET MVC 小牛之路]08 - Area 使用

    ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,每个Area代表应用程序的不同功能模块.这对于大的工程非常有用,Area 使每个功能模块都有各自的文件夹,文件夹中有自己的Cont ...

随机推荐

  1. 一个貌似比较吊的递归转换为loop--总算成功了.

    class Stack(object): """ A class to hold arguements and state data. """ ...

  2. 【伯乐在线】Java线程面试题 Top 50

    本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特 ...

  3. RxJava(01-介绍与初体验)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51612415 本文出自:[openXu的博客] 目录: 一 简介 二 简单使用 初步探索 代 ...

  4. RxJava(八)concat符操作处理多数据源

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51568562 本文出自:[余志强的博客] 一.concat操作符概述 ...

  5. Makefile自动生成

    automake/autoconf入门作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ...

  6. Android简易实战教程--第二十八话《加载大图片》

    Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出.假设手机内存比较小,而要去加载一张像素很高的图片的时候,就会因为内存不足导致崩溃.这种异常是无法捕获的 内存不足并不 ...

  7. 详解EBS接口开发之库事务处理带提前发运通知(ASN)采购接收入库-补充

     A)   Via ROI Create a ASN [ship,ship]  for a quantity =3 on STANDARD PURCHASE ORDER Create  via R ...

  8. android GifView分享

    gif图动画在android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个.经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示 ...

  9. Linux 64位下一键安装scipy等科学计算环境

    Linux 64位下一键安装scipy等科学计算环境 采用scipy.org的各种方法试过了,安装还是失败.找到了一键式安装包Anaconda,基本python要用到的库都齐了,而且还可以选择安装到其 ...

  10. 发运模块中如何创建Debug 文件

     版本11.5.9到12.x A. 针对发运事务处理或者快速发运产生Debug文件 注意:如果通过发运事务处理执行发放,请参考B部分,下面这部分销售订单发放是格外的设置和日志文件. 1.   每一 ...