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

滑动窗口的最大值

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

//比较大小所用的函数
int max(int* numList, int numSize) {
    int max = numList[0];
    for (int i = 1; i < numSize; i++) {
        if (numList[i] > max) {
            max = numList[i];
        }
    }
    return max;
}

//参数四:结果数组的长度
int* maxInWindows(int* num, int numLen, int size, int* returnSize ) {
    if (!size || size > numLen) return NULL;

    *returnSize = 0;
    int* dest = (int*)malloc(sizeof(int) * (numLen - size + 1));
    int head = 0, tail = 0;
    //遍历num
    for (int i = 0; i <= numLen; i++) {
        if (tail - head == size) {
            dest[(*returnSize)++] = max(&num[head], size);
            head++;
        }
        if (tail - head < size) {
            tail++;
        }
    }
    return dest;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务