算法描述
某设备需要记录每分钟检测到的指标值,为了节约存储空间,将连续相同指标值的记录合并,例如,记录(202411231000,2,202411231001,2)合成(202411231000,202411231001,2)。查询时,根据输入的时间范围进行查询,需要返回时间范围内记录的每分钟的指标值,如果某个时间点没有记录值,则此条记录忽略不返回。
输入描述
第一行为查询的时间范围,格式是:startTime,endTime。查询的时间范围为闭区间,即大于等于startTime且小于等于endTime。
输出描述
输出所有查询范围内的分钟时间点对应的指标值。
算法逻辑分析
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 获取设备的原始检测数据记录,合并连续相同指标值的记录。 定义一维数组,将时间点转换成毫秒的整数,存储在一维数组对应的索引位置,索引位置的值表示检测到的指标值。 将查询的时间范围的起始时间点与结束时间点转换成毫秒的整数,在一维数组中检索查询的时间范围的记录,将毫秒的时间点转换成标准分钟时间点,返回分钟时间点以及对应的指标值。 |
Java算法代码
算法数据结构:

算法主函数:

范围查询函数:

生成原始数据记录函数:


生成合并数据记录函数:

生成日志索引数据函数:
