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);
思考:本道题的难点,在于把滑动窗口的一格一格移动,变为了一个区间一个区间的移动,使得有点难以捉摸边界点。