📌  相关文章
📜  检查是否可以按宽度的非升序重新排列矩形(1)

📅  最后修改于: 2023-12-03 15:40:34.821000             🧑  作者: Mango

检查是否可以按宽度的非升序重新排列矩形

简介

给定一组矩形,每个矩形由宽度和高度组成,现要求检查这些矩形是否可以按宽度的非升序重新排列。

思路

首先,可以通过对每个矩形的宽度进行排序来实现对矩形的排列。因为题目要求按非升序进行排列,因此可以使用标准库中的sort()函数。

然后,为了检查是否可以按宽度的非升序进行排列,我们需要遍历每个矩形,检查当前矩形的宽度是否小于或等于前一个矩形的宽度。如果矩形的宽度不满足这个条件,说明无法按照宽度的非升序进行排列。

代码
#include <vector>
#include <algorithm>

bool checkRectangleOrder(std::vector<std::pair<int, int>> rectangles) {
    // Sort by width in non-increasing order
    std::sort(rectangles.begin(), rectangles.end(), [](auto& a, auto& b) {
        return a.first > b.first;
    });

    // Check if each rectangle's width is less than or equal to the previous one
    for (int i = 1; i < rectangles.size(); i++) {
        if (rectangles[i].first > rectangles[i-1].first) {
            return false;
        }
    }

    return true;
}

上述代码使用了vector和pair来表示每个矩形的宽度和高度。在sort函数中,我们使用了一个lambda表达式来定义排序方式。在检查每个矩形的宽度时,我们使用了一个for循环,并且在初始化时从1开始,因为检查第一个矩形的宽度是否小于前一个矩形的宽度是没有意义的,也会导致越界的错误。