题解 | 滑动窗口的最大值
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型一维数组 * @param numLen int num数组长度 * @param size int整型 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ #define MAX(a,b,c) a>b?(a>c?a:c):(b>c?b:c) int* maxInWindows(int* num, int numLen, int size, int* returnSize ) { // write code here /*很熟悉的一个滑动窗口的思路,并且是定长的一个窗口*/ if(size==0||size>numLen) { return returnSize = NULL; } static int maxnum[10000]; int *tempmax =(int *)malloc(size*sizeof(int)); int count = 0; int temp = 0; for(int i= 0;i<numLen;i++) { if(i< size-1) //1.进入窗口 { tempmax[i%size] = num[i]; continue; } tempmax[i%size] = num[i]; for(int j = 0;j<size;j++) { if(temp<tempmax[j]) { temp = tempmax[j]; } } //2.更新 maxnum[count++] =temp;// (*returnSize)++; temp = 0;//reset //3.退出窗口 } free(tempmax); return maxnum; }
这个题目一个核心就是滑动窗口,并且是定长的,一个小细节是它返回的是一个数组,而不是那个returnSize(指针),这个刚开始搞混了。