zoukankan      html  css  js  c++  java
  • 492. Construct the Rectangle(LeetCode)

    For a web developer, it is very important to know how to design a web page's size. So, given a specific rectangular web page’s area, your job by now is to design a rectangular web page, whose length L and width W satisfy the following requirements:

    1. The area of the rectangular web page you designed must equal to the given target area.
    
    2. The width W should not be larger than the length L, which means L >= W.
    3. The difference between length L and width W should be as small as possible.

    You need to output the length L and the width W of the web page you designed in sequence.

    Example:

    Input: 4
    Output: [2, 2]
    Explanation: The target area is 4, and all the possible ways to construct it are [1,4], [2,2], [4,1]. 
    But according to requirement 2, [1,4] is illegal; according to requirement 3,  [4,1] is not optimal compared to [2,2]. So the length L is 2, and the width W is 2.
    

    Note:

    1. The given area won't exceed 10,000,000 and is a positive integer
    2. The web page's width and length you designed must be positive integers.

    Subscribe to see which companies asked this question.

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    class Solution {
    public:
        vector<int> constructRectangle(int area) {
            int L, M, C1 = 1 - area;
            vector<int> v(2,0);
            if (area == 1)
            {
                v[0] = 1;
                v[1] = 1;
            }
            else
            {
                for (int i = 1; i <= area; i++)
                {
                    L = i;
                    M = area / L;
    
                    if (L*M == area)
                    {
                        if (L >= M && (L - M) <= abs(C1))
                        {
                            C1 = L - M;
                            v[0]=L;
                            v[1]=M;
    
                        }
                    
                    }
    
                }
                
            }
            return v;
        }
    };
    int main()
    
    {
        Solution a;
        vector<int> s;
        s=a.constructRectangle(2);
        for (int i = 0; i < s.size(); i++)
        {
            cout << s[i] << endl;
        }
        system("PAUSE");
        return 0;
    }
  • 相关阅读:
    面试中遇到的几道逻辑题目
    [转]计算机专业人工智能方向——研究生面试需知的十大问题
    new、delete、析构函数、自动类型转换
    第三章 传输层
    年后排序+ST表+ksm+矩阵ksm+斐波那契数列矩阵ksm+归并排序
    DP斜率优化
    DP现阶段优化
    平衡树(一)——二叉搜索树
    NOIP 2017-day2
    2017 NOIP2017 day 1
  • 原文地址:https://www.cnblogs.com/wujufengyun/p/6747552.html
Copyright © 2011-2022 走看看