🗒️2271. 毯子覆盖的最多白色砖块数
2025-4-9
| 2025-4-9
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Apr 9, 2025 02:01 AM
给你一个二维整数数组 tiles ,其中 tiles[i] = [li, ri] ,表示所有在 li <= j <= ri 之间的每个瓷砖位置 j 都被涂成了白色。
同时给你一个整数 carpetLen ,表示可以放在 任何位置 的一块毯子的长度。
请你返回使用这块毯子,最多 可以盖住多少块瓷砖。

不定长滑动窗口

基本思路:找到窗口移动的判断条件。
先统计区间内的白色瓷砖数量。每次移动时,将毯子的右端口对齐瓷砖的右端口,如果毯子的左端口完全覆盖不了,之前瓷砖的右端口,说明这个瓷砖无法覆盖,全部删除。
每次对齐新瓷砖区间的右端口后,最好统计有效瓷砖的时候,需要减去没有左窗口部分覆盖到的区域,才是最终的覆盖区域。
左窗口部分没有覆盖到的区域:max((tiles[r][1] - carpetLen + 1) - tiles[l][0], 0);
思考:本道题的难点,在于把滑动窗口的一格一格移动,变为了一个区间一个区间的移动,使得有点难以捉摸边界点。

📎 参考

  • 【题单】滑动窗口与双指针
  • 2106. 摘水果2831. 找出最长等值子数组(二刷)
    Loading...