先把每个数据包拆成两个数组:
ids[i] 表示第 i 个数据包的 idpriorities[i] 表示第 i 个数据包的 priority题目要求:对于每个长度为 k 的滑动窗口,找到窗口内每个数据包右边第一个 priority 更高的数据包,并输出那个数据包的 id。如果一个窗口里没有任何位置满足条件,则跳过该窗口。
给定 n 个数据包,每个数据包包含 id 和 priority。维护一个大小为 k 的滑动窗口,对于每个窗口,找出窗口内每个数据包右边第一个 priority 更高的数据包 id。
数据包格式:
处理规则:
输出所有未跳过窗口的结果序列,每个序列包含该窗口内找到的所有"下一个更高优先级数据包 id"
输入
5,3,[[1,5],[2,3],[3,7],[4,6],[5,4]]
输出
[[3,3],[3]]
说明
窗口 [0,2]: 数据包为 [1:5,2:3,3:7]
1:5 后面第一个优先级更高的是 3:7,输出 3
2:3 后面第一个优先级更高的是 3:7,输出 3
3:7 后面没有优先级更高的,不输出
该窗口输出: 3 3
窗口 [1,3]: 数据包为 [2:3,3:7,4:6]
2:3 后面第一个优先级更高的是 3:7,输出 3
3:7 后面没有优先级更高的,不输出
4:6 后面没有优先级更高的,不输出
该窗口输出: 3
窗口 [2,4]: 数据包为 [3:7,4:6,5:4]
3:7 后面没有优先级更高的,不输出
4:6 后面没有优先级更高的,不输出
5:4 后面没有优先级更高的,不输出
该窗口无输出
输入
4,3,[[1,1],[2,2],[3,3],[4,4]]
输出
[[2,3],[3,4]]
说明
窗口 [0,2]: 数据包为 [1:1,2:2,3:3]
1:1 后面第一个优先级更高的是 2:2,输出 2
2:2 后面第一个优先级更高的是 3:3,输出 3
3:3 后面没有优先级更高的,不输出
输出: 2 3
窗口 [1,3]: 数据包为 [2:2,3:3,4:4]
2:2 后面第一个优先级更高的是 3:3,输出 3
3:3 后面第一个优先级更高的是 4:4,输出 4
4:4 后面没有优先级更高的,不输出
输出: 3 4
输入
4,3,[[4,4],[3,3],[2,2],[1,1]]
输出
[]
说明
窗口 [0,2]: 数据包为 [4:4,3:3,2:2]
4:4 后面没有优先级更高的,不输出
3:3 后面没有优先级更高的,不输出
2:2 后面没有优先级更高的,不输出
该窗口不输出
窗口 [1,3]: 数据包为 [3:3,2:2,1:1]
3:3 后面没有优先级更高的,不输出
2:2 后面没有优先级更高的,不输出
1:1 后面没有优先级更高的,不输出
该窗口不输出
所有窗口均无输出,最终结果输出 []
输入
3,4,[[1,5],[2,3],[3,7]]
输出
[]
说明
窗口大小 4> 数据包数量 3,窗口无输出,最终结果输出 []