🗒️2555. 两个线段获得的最多奖品
2025-4-10
| 2025-4-10
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Apr 10, 2025 01:41 AM
在 X轴 上有一些奖品。给你一个整数数组 prizePositions ,它按照 非递减 顺序排列,其中 prizePositions[i] 是第 i 件奖品的位置。数轴上一个位置可能会有多件奖品。再给你一个整数 k 。
你可以同时选择两个端点为整数的线段。每个线段的长度都必须是 k 。你可以获得位置在任一线段上的所有奖品(包括线段的两个端点)。注意,两个线段可能会有相交。
  • 比方说 k = 2 ,你可以选择线段 [1, 3] 和 [2, 4] ,你可以获得满足 1 <= prizePositions[i] <= 3 或者 2 <= prizePositions[i] <= 4 的所有奖品 i 。
请你返回在选择两个最优线段的前提下,可以获得的 最多 奖品数目。

不定长滑动窗口

基本思路:找到左窗口移动的判断条件。
我的思路:做两次滑动窗口。第一次滑动窗口,找到一个值,并把区间记录下来;第二次滑动窗口,在经过上一次区间时,跳过去。
但是下面的代码只是把样例通过了,没有通过全部。
将第二次分成两段还是不对
枚举第二个线段,看第一个线段最多有多少个。
notion image
这个 pre 数组设置的很巧妙,有点 DP 的感觉。

📎 参考

 
  • 【题单】滑动窗口与双指针
  • 1031. 两个非重叠子数组的最大和2106. 摘水果
    Loading...