当前位置: 首页 > news >正文

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.




分别给出两个矩形的坐下与右上坐标,求出两个矩形的总面积。


思路:
1. 如果矩形不相交,总面积就是两个矩形面积和
2. 如果矩形相交,总面积就是两个矩形面积-相交部分面积。
矩形是否相交:设(A,B) (C,D)分别代表矩形1的左下与右上点坐标, (E,F) (G,H)分别为矩形2的左下与右上点坐标,不相交的情况为,D <=F , C<=E , G <= A, H <=B
求相交面积:将x坐标排序,取出中间两个并求差的绝对值得到deltaX;同理,将y坐标排序,取出中间两个,求差的绝对值得到deltaY,故s = deltaX * deltaY。




实现代码:




public class Solution {
    public int ComputeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        
        var sq1 = Math.Abs(A-C) * Math.Abs(B-D);
    	var sq2 = Math.Abs(E-G) * Math.Abs(F-H);
    	
    	int common = 0;
    	
    	if(D<=F || C<=E || G <=A || H <=B){
    		common = 0;
    	}
    	else{
    		var xArr = new int[]{A,E,C,G}.OrderBy(x=>x).ToList();
    		var yArr = new int[]{B,F,D,H}.OrderBy(y=>y).ToList();
    		
    		common = Math.Abs(xArr[1] - xArr[2]) * Math.Abs(yArr[1] - yArr[2]);
    	}
    	
    	return sq1 + sq2 - common;
    }
}


相关文章:

  • 推荐一个做“台”的思路
  • LeetCode -- Reverse Nodes in k-Group
  • LeetCode -- Binary Search Tree Iterator
  • 使用pgRouting进行路径分析
  • LeetCode -- Combination Sum III
  • 怎样使用深度纹理
  • LeetCode -- Expression Add Operators
  • [Web 开发] 获取页面元素的坐标及大小
  • LeetCode -- First Bad Version
  • 本地SPAN和远程SPAN监控原理
  • LeetCode -- House Robber II
  • 打破传统,实战至上的网管师认证
  • LeetCode -- Invert Binary Tree
  • 使用简单ORM开发框架进行快速开发
  • LeetCode -- Largest Number
  • 4个实用的微服务测试策略
  • CAP理论的例子讲解
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • js算法-归并排序(merge_sort)
  • Python 反序列化安全问题(二)
  • Terraform入门 - 1. 安装Terraform
  • underscore源码剖析之整体架构
  • windows下使用nginx调试简介
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 动态规划入门(以爬楼梯为例)
  • 工程优化暨babel升级小记
  • 使用 Docker 部署 Spring Boot项目
  • 数据科学 第 3 章 11 字符串处理
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​比特币大跌的 2 个原因
  • ​什么是bug?bug的源头在哪里?
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #13 yum、编译安装与sed命令的使用
  • $NOIp2018$劝退记
  • (003)SlickEdit Unity的补全
  • (2.2w字)前端单元测试之Jest详解篇
  • (9)目标检测_SSD的原理
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (SpringBoot)第二章:Spring创建和使用
  • (zhuan) 一些RL的文献(及笔记)
  • (笔试题)合法字符串
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)ABI是什么
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net 8.0 新的变化
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET框架
  • .NET委托:一个关于C#的睡前故事
  • .Net下的签名与混淆