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

滑动窗口的最大值

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

用数组实现栈功能 alt

//比较大小所用的函数
int max(int* numList,int numSize){
    int temp=numList[0];
    for(int i=1;i<numSize;i++){
        if(temp<numList[i]){
            temp=numList[i];
        }
    }
    return temp;
}
//主函数
int* maxInWindows(int* num, int numLen, int size, int* returnSize ) {
    //初始化结果数组
    *returnSize=0;
    int* res=(int*)malloc(sizeof(int)*(numLen-size+1));
    //初始化一个队,用来不断存入数据
    int* queue;
    queue=(int*)malloc(sizeof(int)*numLen);
    int head=0,tail=0;
    //循环入队
    for(int i=0;i<=numLen;i++){
        //如果队头和队尾之间的数据个数达到要求
        if(tail-head==size){
            //找到此部分数据中最大的存入结果数组
            res[(*returnSize)++]=max(&num[head],size);
            //队头向后移一位
            head++;
        }
        //如果队头队尾之间数据不够
        if(tail-head<size){
        	//继续入队数据
            queue[tail++]=num[i];
        }
    }
    return res;
}
全部评论
少了一个判断:当size等于0的时候
点赞 回复 分享
发布于 2022-12-12 15:22 山东
queue没用,tail++就行
点赞 回复 分享
发布于 09-05 01:27 广东

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
评论
4
收藏
分享
牛客网
牛客企业服务