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

滑动窗口的最大值

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * @author Senky
 * @date 2023.08.24
 * @par url https://www.nowcoder.com/creation/manager/content/584337070?type=column&status=-1
 * @brief 
 * @param num int整型一维数组 
 * @param numLen int num数组长度
 * @param size int整型 
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */

#include <stdlib.h>
#define MAX(a,b) ((a>b)?a:b)

//找到当前窗口最大值
int max(int *num,int size)
{
    int max = num[0];

    for(int i = 0; i < size; i++)
    {
        max = MAX(max,num[i]);
    }

    return max;
}

int* maxInWindows(int* num, int numLen, int size, int* returnSize )
{
    // write code here
    if(0 == size || numLen < size)
    {
        //窗口大小为0或大于数组长度 返回空
        return NULL;
    }

    int* result = (int*)malloc(sizeof(int));
    *returnSize = 0;

    for(int i = 0; i <= numLen - size; i++)
    {
        result[(*returnSize)++] = max(num++,size);
        result = realloc(result, (*returnSize + 1)*sizeof(int));//扩展数组大小
    }
    
    return result;
}

#TOP101#
TOP101-BM系列 文章被收录于专栏

系列的题解

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务