leetcode 223. Rectangle Area | 223. 矩形面积(Java)
生活随笔
收集整理的這篇文章主要介紹了
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 222. Count
- 下一篇: leetcode 227. Basic