[492] C 언어 LeetCode 브러시. 직사각 구성 (E)

웹 개발자는 페이지의 크기가 매우 중요하다 계획하는 방법을 알고있다. 이제 페이지의 특정 사각형 영역을 제공, 당신의 작업은 길이 L과 직사각형 페이지의 다음과 같은 요구 사항을 만족 W 폭을 설계하는 것입니다. 요구 사항 :

디자인 1. 페이지는 사각형 주어진 대상 지역과 동일해야합니다.

2. 폭 W는 길이 L을 초과하지 않아야한다, 즉 L> = W.이 필요

(3) 길이 L과 폭 W의 차이는 가능한 한 작게해야한다.
당신은 출력 길이 (L)에 필요 페이지 순서 W. 설계 폭

예 :

입력 4
출력 [2,2]
설명 : 대상 영역이 구성 프로그램 가능한 모든 [1,4], [2,2]을 갖는 4이다 [4,1].
그러나, 제 2 항에있어서, [1,4]은 요구 사항을 충족하지 않는, 제 3 항에있어서, [2,2] 2 W 이상의 출력 (2)의 길이 L [4]보다 폭의 요구 사항을 충족시킨다.
설명 :

주어진 양의 정수 및 10,000,000보다 크지.
설계해야 페이지의 길이와 폭은 양의 정수입니다.

출처 : 숙박 버튼 (LeetCode)
링크 : HTTPS : //leetcode-cn.com/problems/construct-the-rectangle는
모든 네트워크에서 공제 저작권. 상업 무단 전재 소스를 표시하시기 바랍니다 승인 된 공식, 비상업적 재판에 문의하시기 바랍니다.

길이 L과 폭 W 상기리스트에 열거 방지되도록 가능한 한 작게되어야 사이의 간격 :위한은 (i = (면적 + 1) / 2; I> 1; 난 -)

int* constructRectangle(int area, int* returnSize){
    int i, j;
    int res = 0;
    int *out;
    int lastLenght = 0;
    int weith;
    
    out = (int *)malloc(sizeof(int) * 2);
    *returnSize = 2;
    
    for (i = (area + 1)/2; i > 1; i--) {
        res = area % i;
        
        if (res == 0) {
            weith = area/i;
            if(weith > i) {
                break;
            }
            
            lastLenght = i;
        }
    }
    
    if (lastLenght != 0) {
        out[0] = lastLenght;
        out[1] = area/lastLenght;
    } else {
        out[0] = area;
        out[1] = 1;
    }

    return out;
}

 

게시 된 149 개 원래 기사 · 원 찬양 17 · 전망 (110) 000 +

추천

출처blog.csdn.net/jin615567975/article/details/104416768