题解 | #滑动窗口的最大值#

滑动窗口的最大值

http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

初始化处理前3个数的最大值,这样后续处理的每个数都有对应的窗口及最大值 也就是后续处理的每个数都应该是当前窗口的边界值 以 2 3 4 2 6 2 为例 初始化处理前3个数: 2 3 4 后续处理第一个数 2 而2恰好是当前窗口3 4 2的边界值

function maxInWindows(num, size)
{
    // write code here
    //窗口大于数组长度或窗口长度为0的时候,返回空
    if(size> num.length || size===0) return [];
    let maxNum=num[0];
    let tmp=0; //记录maxNum的index位置
    let result =[];
    //这是处理首个窗口
    for(let i=0;i<size;i++){//在滑动窗口中进行判断
        if(num[i]>maxNum){
            tmp=i;
            maxNum=num[i];
        }
    }
    result.push(maxNum)
    //后续处理
    for(let j=size;j<num.length;j++){
        if(num[j]>=maxNum){
            maxNum=num[j];
            tmp=j;
        }else{
            if(j-size+1>tmp){// 这意味着之前的maxNum已经脱离窗口了 我们要从j-size+1位置重新寻找
                maxNum=num[j-size+1];
                for(let i=j-size+1;i<j+1;i++){
                    if(num[i]>maxNum){
                        tmp=i;
                        maxNum=num[i];
                    }
                }
            }
        }
        result.push(maxNum)
    }
    return result
}
module.exports = {
    maxInWindows : maxInWindows
};
全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务