当前位置: 首页 > news >正文

怎样修改网站标题当当网网站建设建议

怎样修改网站标题,当当网网站建设建议,学外贸英语的网站,网站建设 个人模板滑动窗口介绍 滑动窗口是一种我们想象中的数据结构 它是用来解决算法问题的 我们可以想象出一个数组 然后再在这个数组的起始位置想象出两个指针 L 和 R 我们对于这两个指针做出以下规定 L 和 R指针只能往右移动L指针不能走到R指针的右边我们只能看到L指针和R指针中间的数字 …滑动窗口介绍 滑动窗口是一种我们想象中的数据结构 它是用来解决算法问题的 我们可以想象出一个数组 然后再在这个数组的起始位置想象出两个指针 L 和 R 我们对于这两个指针做出以下规定 L 和 R指针只能往右移动L指针不能走到R指针的右边我们只能看到L指针和R指针中间的数字 比如说当前L和R指针重合 我们就什么数字都看不见 如果此时R指针往右走一步 那么我们就能看到L指针和R指针中间的数组的数字 又因为这种移动的方式特别像滑动 所以说我们将这种想象出来的数据结构叫做滑动窗口 如何确定一个滑动窗口内的最大值 如果我们每次都遍历去获取滑动窗口的最大值的话那么每次获取的时间复杂度就是ON了 这样子明显很复杂 所以说我们需要想想别的方式去找到最大值 这里直接给出结论 我们使用双端队列去获取一个滑动窗口内的最大值双端队列的意义是 此时开始缩小滑动窗口 哪些数字可能成为最大值 为了让双端队列能够实现它的意义 我们做出以下规定 让R指针向右滑动的时候 我们从右边插入数字的下标到双端队列中如果说插入的数字要大于原来的数字 我们让原来的数字出队列让L指针向右滑动的时候 我们从左边开始比较双端队列第一个左边数起下标和L指针的下标如果说L指针的下标要大于双端队列最左边的下标 则将其弹出 至于C中的双端队列 大家可以参考这篇博客 双端队列 窗口内最大值 假设一个固定大小为W的窗口 依次划过数组arr 让你依次返回每次窗口移动时窗口中的最大值 假设数组arr为 【4 3 5 4 3 3 6 7】 W 3 返回【5 5 5 4 6 7】 这道题目实际上就是一个滑动窗口最大值的简单版本 我们使用一个双端队列就能很轻松的实现 面对这个问题我们可以拆分成两部分来解决 首先把滑动窗口的大小扩大到3接着滑动窗口整体开始移动 两部分的代码都不算难 代码表示如下 void process5(vectorint arr , vectorint ans , int W) {dequeint dq(0 , 0);for (int R 0; R W; R){while (!dq.empty() arr[dq.front()] arr[R]){dq.pop_back();} dq.push_back(R); } int R W - 1; int L 0; int N static_castint(arr.size()); while (R N) { while (!dq.empty() arr[dq.back()] arr[R]) { dq.pop_back();} dq.push_back(R);while (L dq.front()) { dq.pop_front();} ans.push_back(arr[dq.front()]);L; R;} }这道题目给我们的提醒主要有两个 当我们R指针右移的时候要使用while来进行判断R指针在初始化之后要重置 否则会出现一些错误 为了避免这些错误 我们最好每次使用一个变量之前对其进行初始化 子数组中符合条件的个数 给定一个整形数组arr 和一个整数num 某个arr中的子数组sub 必须要满足 sub中的最大值减去sub中的最小值小于等于num 返回sub中达标的子数组的数量 我们首先分析下问题 如果我们没有学过滑动窗口和双端队列 那么这道题我们会使用暴力的方式来得到答案 三个for循环嵌套 时间复杂度就变成了n的三次方 这显然是不可以的 当我们使用滑动窗口解决这个问题的时候 由于我们的左右两个下标都是单向的往右边移动 所以说此时的时间复杂度就是N 当我们得到两个下标满足上述条件时 比如说0 ~ N上的最大值减去0~N中的最小值小于等于num 此时我们就可以说 左下标为0 右下标为0 ~ N-1上的任意一个子数组都满足条件 因为此时最大值只有可能变小 最小值只有可能变大 所以说它们之间的差值肯定还是会小于等于num 所以我们就能确定 以0为左边界 N为右边界上符合条件的子数组有 N - 0 1个 之后我们左边界右移即可 整体思路如下 我们使用两个双端队列来记录子数组的最大值和最小值我们让右边界一直右移动 直到子数组不满足条件为止此时通过上面的技巧计算出左边界到右边界-1的满足条件子数组个数 之后左边界 代码表示如下 int process(vectorint arr, int num) {dequeint Max_Win(0, 0);dequeint Min_Win(0, 0);int count 0;int R 0;int N static_castint(arr.size());for (int L 0; L N; L){while (R N){while (!Max_Win.empty() arr[Max_Win.back()] arr[R]){Max_Win.pop_back();}Max_Win.push_back(R);while (!Min_Win.empty() arr[Min_Win.back()] arr[R]){Min_Win.pop_back();}Min_Win.push_back(R);if (arr[Max_Win.front()] - arr[Min_Win.front()] num){break;}else{R;}}count R - L;if (Max_Win.front() L){Max_Win.pop_front();}if (Min_Win.front() L){Min_Win.pop_front();}}return count; }这里有一点需要注意的是 count R - L;语句必须要放到while循环的外面才行 否则会因为R下标越界的问题而导致不会执行if语句 最终导致count计算不完整
http://www.yayakq.cn/news/6191/

相关文章:

  • 常州网站推广多少钱全国知名网站建设公司
  • 免费黄页营销网站邯郸做wap网站
  • 宜昌十堰网站建设哪家好基于wordpress建小程序JWT
  • wordpress网站域名服务器传奇网页游戏排行榜前十
  • 网站浏览历史能恢复吗怎么设置的图文制作app哪个好
  • 建设网站的体会我想找阿里巴巴做网站推广
  • wordpress内部服务器成都网站排名生客seo
  • 邹城网站建设网页设计模板素材图书馆
  • 宁波江北建设局网站网站建设 域名 空间
  • 台州建设信息港网站外贸网站开发营销
  • 营销网站定制福建外贸网站建设
  • 做个静态网站多少钱wordpress最大上传2g
  • 个人网站审批网站首页被k 内页还有
  • 网站联盟是什么意思汕头seo外包服务
  • 静态网站建设流程怎么写图片制作软件下载
  • 域名空间网站怎么做网页设计手机端
  • 为什么手机进网站乱码网站建设做的好的公司
  • 网站怎么显示被k电商 网站 建设
  • 服务器系统搭建网站源码电商平台活动策划方案
  • 长春高铁站wordpress 3.9中文版
  • 提供服务好的网站制作什么网站做免单衣服
  • 唐山开发网站的公司360网站建设公司
  • 网站建设策划书ppt鞍山做网站哪家好
  • 个人网站 备案建设厅注册中心网站
  • 厦门网站建设的公司寿光做网站m0536
  • 那个相亲网站做的比较好查网站域名备案
  • 模板网站自助建站什么是网站反向链接
  • joomla 多语言网站wordpress分页效果
  • 设计制作一个网站智慧团建系统平台登录入口
  • 企业网站建设成本网站地区词优化