ST表(他のブロガーさんからの転載)

1. はじめに

ST表:https://zhuanlan.zhihu.com/p/123360481

2. 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;
    }
}

おすすめ

転載: blog.csdn.net/qq_43456605/article/details/132670129