您的位置:首页 > 健康 > 养生 > 算法之滑动窗口

算法之滑动窗口

2024/10/5 18:24:10 来源:https://blog.csdn.net/qq_41929416/article/details/141690957  浏览:    关键词:算法之滑动窗口

滑动窗口:在一个区间内找到满足符合条件,在不断的缩小区范围,找到最终的值。区间像窗口一样,不断的向前移动
题目:leetcode209
思路:
满足滑窗的条件是 数组元素之和,大于等于target。
起始位置移动时,当前窗口的值大于等于s了,窗口就要向前移动了(也就是该缩小了)。
结束位置移动时,窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。
在这里插入图片描述

leetcode59
leetcode59考察的循环变量不变的原则,规定好 左闭右开,左闭右闭的原则,按照定义好的原则。

int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {//初始化返回的结果数组的大小*returnSize = n;*returnColumnSizes = (int*)malloc(sizeof(int) * n);//初始化返回结果数组ansint** ans = (int**)malloc(sizeof(int*) * n);int i;for(i = 0; i < n; i++) {ans[i] = (int*)malloc(sizeof(int) * n);(*returnColumnSizes)[i] = n;}int startx = 0;int starty = 0; //设置每次循环的起始位置 int offer = 1; //  考虑的是左闭右开原则,最后一位不处理int count = 1; // 需要填入的值int mid = n / 2; // 当循环的数组为奇数的时候,中间的位置int loop = n /2; //循环圈数while(loop){int i = startx;int j = starty;// 遵循循环变量不变原则,左闭右开// 上边界 从左到右for(j ; j < n - offer; j++){ans[startx][j] = count++;}// 右边界,从上到下for(i ; i < n - offer; i++){ans[i][j] = count++;}// 下边界 从右到左for(j; j > starty; j--){ans[i][j]=count++;}// 左边界for(i; i > startx; i--){ans[i][j] = count++;}startx++;starty++;offer++;loop--;}if(n%2){ans[mid][mid]=count;}return ans;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com