本题要求对每一分钟的端口流量速率,找到它后面第一次出现的更大流量速率,并返回相差的分钟数。
可以使用 单调栈 来解决。
核心思路如下:
给定一个整数数组 portRates,portRates[i] 表示该端口第 i 分钟端口流量速率(单位:bps)。
返回一个数组 ratesStat,ratesStat[i] 表示多少分钟以后出现比当前更大的流量速率,如果没有出现更大的流量速率,则值为0。
输入
[730,740,750,710,690,720,760,730]
输出
[1,1,4,2,1,1,0,0]
说明
输入数组第 0 分钟端口流速是 730 bps,第 1 分钟端口流速是 740 bps,相差 1 分钟,则返回数组第 0 个元素的值为 1;
输入数组第 2 分钟端口流速是 750 bps,第 6 分钟端口流速是 760 bps,相差 4 分钟,则返回数组第 2 个元素的值为 4。
输入
[800]
输出
[0]
说明
只有一个数据,返回 0
输入
[800,700]
输出
[0,0]
说明
只有两个元素,后一个流量比第一个流量低,返回 [0,0]
输入
[700,800]
输出
[1,0]
说明
只有两个元素,后一个流量比第一个流量高,返回 [1,0]
输入
[0]
输出
[0]
说明
只有一个数据,返回 0