本文是在学习中的总结,欢迎转载但请注明出处: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. RxJava操作符(02-创建操作)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51645348 本文出自:[openXu的博客] 目录: Create Defer Empty ...

  2. Android设置item的行间距,以及去掉分割线方法

    1.设置item的行间距: 可以在xml布局文件中的listView下设置xml属性: android:divider="#00000000" android:dividerHei ...

  3. ORACLE数据库学习之备份与恢复

     oracle数据库的备份与恢复 第一部分:数据库的备份 备份的必要性 因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含 ...

  4. 浅谈SSH框架

    在学习或者接触一个新的概念的时候,我们应该在脑海中发挥我们的搜索引擎,牵一发动全身的去想,这个知识跟我之前接触过的有哪些相同或者不同的地方,从这个角度去看那些新的知识和概念,经过旧知识和新知识的对比我 ...

  5. 5. React 组件的协同使用 组件嵌套和Mixin

            组件是React的核心,构建大型项目时多个组件之间需要进行协同使用.可以从横向和纵向两个角度来实现组件的协同使用,纵向的协同使用就是组件嵌套,横向的协同使用就是Mixin(抽取公共方法 ...

  6. 07 ProgressDialog

    <span style="font-size:18px;">package com.fmy.example1; import android.app.Activity; ...

  7. JQuery实战--可以编辑的表格

    廊坊下雪了,15年的第二场雪,比14的来的稍晚一些,停靠在11教门前的自行车,成了廊坊师范学院最美丽的风景线.还记得以前学习css的时候,就曾经接触过如何编写设计一些表格和表单的样式,例如如何设计表格 ...

  8. Android版本更新时对SQLite数据库升级或者降级遇到的问题

    SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据库进行自定 ...

  9. 论文系统Step1:从日志记录中提取特定信息

    论文系统Step1:从日志记录中提取特定信息 前言 论文数据需要,需要实现从服务器日志中提取出用户的特定交互行为信息.日志内容如下: 自己需要获取"请求数据包一行的信息"及&quo ...

  10. [C++学习历程]基础部分 C++中的函数学习

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/20305815 作者:sushengmiyan 一.静态变量: 局部变量是线程到达定义的 ...