文章目录
- 一、简介
- 二、Leetcode题目补充
- 1. 2023/9/6 更新
一、简介
ST表:https://zhuanlan.zhihu.com/p/123360481
二、Leetcode题目补充
1. 2023/9/6 更新
239. 滑动窗口最大值
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
//记录数组的长度
int length=nums.length;
//创建返回结果的数组
int[] cons=new int[length-k+1];
//确定ST表的跳跃指数
int j=0;
while((1<<j)<k){
j++;
}
if(j==0)
{
j++;
}
//定义ST数组
int[][] f=new int[length][j];
int m1=0;
//初始化ST数组
for(int i=0;i<length;i++){
//以i为起点,长度为2的0次方为长度的区间的最大值
f[i][m1]=nums[i];
}
//预处理ST数组
for(int h=1;h<j;h++){
for(int i=0;i+(1<<h)-1<length;i++){
f[i][h]=Math.max(f[i][h-1],f[i+(1<<(h-1))][h-1]);
}
}
j--;
for(int i=0;i<length-k+1;i++){
int m=Math.max(f[i][j],f[i+k-(1<<j)][j]);
cons[i]=m;
}
return cons;
}
}