Lettcode_223_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.
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;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.