日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

leetcode 223. Rectangle Area | 223. 矩形面积(Java)

發布時間:2024/2/28 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 223. Rectangle Area | 223. 矩形面积(Java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

https://leetcode.com/problems/rectangle-area/

類似問題:藍橋杯 BASIC-18 基礎練習 矩形面積交

題解

本題的重點在于如何計算重疊部分的面積,即:如何定位重疊部分的左下角、右上角的邊界。

1、分類討論:重疊 vs 不重疊

2、關于如何確定重疊部分左上角、右下角邊界

確定重疊部分的邊界,也就是分別找到 重疊部分的右上角x、重疊部分的右上角y、重疊部分的左下角x、重疊部分的左下角y 的過程。

在代碼中,我們分別將其定義為 topRightX,topRightY,bottomLeftX,bottomLeftY

確定完重疊部分的邊界之后,將重疊部分的兩條邊的長度相乘,就可以得到重疊部分的面積了。

3、代碼

class Solution {public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int s1 = (ax2 - ax1) * (ay2 - ay1);int s2 = (bx2 - bx1) * (by2 - by1);// 1. 無重疊部分 兩矩形面積直接相加if (bx1 >= ax2 || bx2 <= ax1 || by1 >= ay2 || by2 <= ay1) {return s1 + s2;}// 2. 有重疊部分 兩矩形面積相加后 減去重疊部分// 2.1 overlap bottom leftint bottomLeftX = Math.max(ax1, bx1);int bottomLeftY = Math.max(ay1, by1);// 2.2 overlap top rightint topRightX = Math.min(ax2, bx2);int topRightY = Math.min(ay2, by2);return s1 + s2 - (topRightX - bottomLeftX) * (topRightY - bottomLeftY);} }

總結

以上是生活随笔為你收集整理的leetcode 223. Rectangle Area | 223. 矩形面积(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。