本篇博客会讲解力扣“1725. 可以形成最大正方形的矩形数目”的解题思路,这是题目链接。
本题的思路是:对于每一个矩形,切分出来的最大正方形的边长是矩形的长和宽的较小值。我们需要维护最大的正方形边长,并统计数目。
我们可以写一个宏来求最小值,即#define MIN(a, b) ((a)<(b)?(a):(b))
,也可以使用函数fmin来求最小值。
int countGoodRectangles(int** rectangles, int rectanglesSize, int* rectanglesColSize){
int cnt = 0; // 最大正方形的个数
int max = 0; // 最大的正方形边长
for (int i = 0; i < rectanglesSize; ++i)
{
// 计算正方形边长
int a = (int)fmin(rectangles[i][0], rectangles[i][1]);
// 统计个数
if (a > max)
{
max = a;
cnt = 1;
}
else if (a == max)
{
++cnt;
}
}
return cnt;
}
总结
- 可以使用MIN宏或者fmin函数来求较小值。
- 在维护最小值的同时,可以统计个数。
感谢大家的阅读!