假设我们有一个特定的矩形网页区域,我们的工作是设计一个矩形网页,其长度L和宽度W满足以下要求-
网页的面积必须等于给定的目标面积。
宽度W不应大于长度L,并且L> =W。
L和W之间的差异应尽可能小。
因此,如果输入像4,那么输出将是[2,2],因为目标区域是4,构造它的所有可能方式是[1,4],[2,2],[4 ,1]。根据要求,此处为2,[1,4]是非法的;根据要求3,与[2,2]相比,[4,1]是不合适的。因此,长度L为2,宽度W为2。
为了解决这个问题,我们将遵循以下步骤-
对于初始化i:=面积的平方根,当i> 0时,更新(将i减1),执行-
定义数组v,插入{area / i,i}
返回v
如果面积模i与0相同,则-
返回{-1,-1}
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> constructRectangle(int area) { for (int i = sqrt(area); i > 0; i--) { if (area % i == 0) { vector<int> v{ area / i, i }; return v; } } return { -1, -1 }; } }; main(){ Solution ob; print_vector(ob.constructRectangle(4)); }
4
输出结果
[2, 2, ]