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

网站如何进行建设全域seo

网站如何进行建设,全域seo,怎么给网站做友情链接,wordpress aliay滑动窗口的最大值 题目描述#xff1a; 给定一个长度为 n 的数组 num 和滑动窗口的大小 size #xff0c;找出所有滑动窗口里数值的最大值。 例如#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3#xff0c;那么一共存在6个滑动窗口#xff0c;他们的最大值…滑动窗口的最大值 题目描述 给定一个长度为 n 的数组 num 和滑动窗口的大小 size 找出所有滑动窗口里数值的最大值。 例如如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3那么一共存在6个滑动窗口他们的最大值分别为{4,4,6,6,6,5} 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个 {[2,3,4],2,6,2,5,1} {2,[3,4,2],6,2,5,1} {2,3,[4,2,6],2,5,1} {2,3,4,[2,6,2],5,1} {2,3,4,2,[6,2,5],1} {2,3,4,2,6,[2,5,1]}。 窗口大于数组长度或窗口长度为0的时候返回空。 数据范围 1≤n≤100000≤size≤10000数组中每个元素的值满足 ∣val∣≤10000 要求空间复杂度 O(n)时间复杂度 O(n) 示例1 输入[2,3,4,2,6,2,5,1],3 返回值[4,4,6,6,6,5] 示例2 输入[9,10,9,-7,-3,8,2,-6],5 返回值[10,10,9,8] 示例3 输入[1,2,3,4],5 返回值[] 解题思路 方法一双端队列Deque 初始化一个空的双端队列和一个空的结果数组。遍历数组中的每个元素对于每个元素 移除双端队列中不在滑动窗口范围内的元素的索引。移除双端队列中小于当前元素的元素的索引因为它们不可能是最大值。将当前元素的索引添加到双端队列中。当滑动窗口完全在数组内时将双端队列首部的元素添加到结果数组中。 返回结果数组。 方法一JavaScript版本代码如下 function maxSlidingWindow(nums, size) {if (size 0 || size nums.length) return [];const result [];const deque []; // 双端队列用于存储索引for (let i 0; i nums.length; i) {// 移除不在滑动窗口内的元素的索引while (deque.length deque[0] i - size 1) {deque.shift();}// 移除比当前元素小的元素的索引因为它们不可能是最大值while (deque.length nums[deque[deque.length - 1]] nums[i]) {deque.pop();}// 将当前元素的索引添加到双端队列中deque.push(i);// 当滑动窗口完全在数组内时将当前窗口的最大值添加到结果中if (i size - 1) {result.push(nums[deque[0]]);}}return result; }// 示例 console.log(maxSlidingWindow([2, 3, 4, 2, 6, 2, 5, 1], 3)); // [4, 4, 6, 6, 6, 5] console.log(maxSlidingWindow([9, 10, 9, -7, -3, 8, 2, -6], 5)); // [10, 10, 9, 8] console.log(maxSlidingWindow([1, 2, 3, 4], 5)); // []方法二单调递减栈 初始化一个空的单调递减栈和一个空的结果数组。遍历数组中的每个元素对于每个元素 弹出栈顶元素直到栈为空或者栈顶元素小于当前元素。如果弹出的元素索引对应的窗口已经超出范围则忽略。如果栈为空或者栈顶元素对应的窗口正好是当前窗口则将栈顶元素对应的最大值添加到结果数组中。将当前元素的索引压入栈中。 返回结果数组。 方法二JavaScript版本代码 function maxSlidingWindow(nums, size) {if (size 0 || size nums.length) return [];const result [];const stack []; // 单调递减栈用于存储索引for (let i 0; i nums.length; i) {// 弹出栈顶元素直到栈为空或者栈顶元素对应的值小于当前元素while (stack.length nums[stack[stack.length - 1]] nums[i]) {const index stack.pop();// 如果弹出的索引对应的窗口已经不在范围内则跳过if (i - index 1 size) {continue;}// 如果栈为空或者栈顶元素对应的窗口在范围内则将当前最大值加入结果if (stack.length 0 || i - stack[stack.length - 1] 1 size) {result.push(nums[index]);}}// 将当前元素的索引压入栈中stack.push(i);}return result; }// 示例 console.log(maxSlidingWindow([2, 3, 4, 2, 6, 2, 5, 1], 3)); // [4, 4, 6, 6, 6, 5] console.log(maxSlidingWindow([9, 10, 9, -7, -3, 8, 2, -6], 5)); // [10, 10, 9, 8] console.log(maxSlidingWindow([1, 2, 3, 4], 5)); // []总结与类似题解题思路 解决滑动窗口最大值问题的关键在于维护一个能够快速访问当前窗口最大值的机制。这可以通过以下步骤实现 使用双端队列或单调栈来维护一个有序的序列使得我们可以快速访问最大值。在遍历数组的过程中不断调整这个有序序列确保它始终反映当前窗口的最大值。当窗口滑动时及时移除不再属于窗口的元素并添加新进入窗口的元素。在窗口完全在数组内时记录窗口的最大值。 对于类似的滑动窗口问题如求最小值、求平均值等都可以采用类似的思路关键在于如何维护一个能够快速提供所需信息的辅助数据结构。这种方法的时间复杂度通常是O(n)因为我们每个元素最多只会被推入和弹出辅助数据结构一次。
http://www.zqtcl.cn/news/811801/

相关文章:

  • 网站建设合同 保密条款wordpress网站手机端
  • 汕头建站费用wordpress转cms
  • 全美网站开发PHP 网站开发 重点知识
  • 电商网站建设重要性一个公司可以做几个网站吗
  • 婚恋网站系统淘宝联盟推广做网站违法
  • 双鸭山网站建设公司百度电脑版官网下载
  • 网站开发项目名html欧美网站模板
  • 成都哪里有做网站的雪樱wordpress主题
  • 深圳建站模板公司微商管理系统
  • 贸易建设网站网页美工设计图片
  • 网站建设尺寸规范国外h5网站模板下载
  • 怎么区分网站的好坏软件定制化开发的知识产权归属
  • 网站建设客户需求分析调研表网站建设企业网站
  • 建设网站要注意什么问题临沂网站建设团队
  • 怎么做网站和注册域名互联网行业的工作岗位
  • 北京做网站优化多少钱网站反链和外链的区别
  • 厦门网站推广找谁wordpress的模板目录在哪里
  • 做网站的维护成本wordpress 密码更改
  • 企业网站建设流程概述长春网站推广排名
  • 网站导航设计牙科 网站建设方案
  • 手机微信网站开发教程企业网站的制作成本
  • 做电商网站的流程网站架构搭建
  • 可以下载新闻视频的网站重庆seo
  • 网站内容页设计网站建设实验分析
  • 网站建设的软硬件环境凡科精选app
  • 网站开发过滤器作用信息港怎么发布信息
  • 网站服务器组建百度seo引流怎么做
  • 南京网站定制公司如何用源码做网站
  • 网站建站视频wordpress网站好用吗
  • 网页设计网站搭建建筑材料价格信息网