3025人员的占位方案数
Problem: 3025. 人员站位的方案数 I
思路:
想了好久,发现最后挺简单的。如图。当以1作为左端点时,如果右端点大于左端点的值,说明不满足A 在 B 的左上角条件,直接跳过此次循环。如果右端点的值小于等于左端点,判断右端点是否大于记录的最大值,如果大于,例如点3,说明左、右端点构成的矩形中没有其他点,更新最大值,ans++。
难点:当满足A 在 B 的左上角时才更新最大值。这样就能确保最大值永远在左端点高度之下(或者平齐),换句话说,该最大值是以左端点为左上角的矩形范围内的最大值,后面每次右端点进入的时候,只需要比较右端点和最大值即可。
复杂度
- 时间复杂度: O(n^2)
- 空间复杂度: O(1)
Code
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XiaoYi Blog!
评论