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

南通 网站优化wordpress 侧边悬浮框

南通 网站优化,wordpress 侧边悬浮框,制作网页时用的最多的图像文件,漂亮产品网站滑动窗口的最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗 口从数组的最左侧移动到数组的最右侧。你只可以看 到在滑动窗口内的 k 个数字。滑动窗口每次只向右移 动一位。 返回 滑动窗口中的最大值 。输入:整型数组,最大值k 输出&am…

滑动窗口的最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗
口从数组的最左侧移动到数组的最右侧。你只可以看
到在滑动窗口内的 k 个数字。滑动窗口每次只向右移
动一位。
返回 滑动窗口中的最大值 。

输入:整型数组,最大值k
输出:返回数组
思路:定长双指针,滑动窗口,不是很合理

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//定义结果数组int[] result = new int[nums.length - k + 1];//定义局部最大值int tmpMax = 0;for(int i = 0;i < k;i++){tmpMax = Math.max(tmpMax,nums[i]);}result[0] = tmpMax;//定义双指针int l = 0;int r = k - 1;while(r < nums.length){tmpMax = Math.max(tmpMax,nums[r]);result[l] = tmpMax;l++;r++;}return result;}
}

当k为1时,结果错误,移动删除掉的可能刚好是最大值,所以不能通过此方法来进行计算


二刷

  1. 使用优先队列进行维护堆顶元素,先将前k个元素加入到队列中,然后一次遍历剩下的元素,进行堆顶的维护
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//定义优先队列PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<>(){public int compare(int[] pair1, int[] pair2){//降序排列return pair1[0] != pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];}});int n = nums.length;//将前k个数组元素加入优先队列for(int i = 0; i < k; i++){pq.offer(new int[]{nums[i], i});}//结果数组int[] result = new int[n - k + 1];result[0] = pq.peek()[0];//然后进行后面的遍历for(int i = k; i < n; i++){//每次都加入到优先队列pq.offer(new int[]{nums[i], i});//维护堆顶元素while(pq.peek()[1] <= i - k){pq.poll();}result[i - k + 1] = pq.peek()[0];}return result;}
}

注意这里细节处理,什么时候将堆顶元素poll,while(pq.peek()[1] <= i - k),还有将数组的索引位置也维护在优先队列中
但是此时的算法执行用时有点高
在这里插入图片描述
2. 使用单调队列,主要在于这段

while(!queue.isEmpty() && nums[i] >= nums[queue.peekLast()]){queue.pollLast();}

的理解

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;Deque<Integer> queue = new LinkedList<>();//将前k个加入双端队列for(int i = 0; i < k; i++){while(!queue.isEmpty() && nums[i] >= nums[queue.peekLast()]){queue.pollLast();}queue.offer(i);}int[] result = new int[n - k + 1];result[0] = nums[queue.peekFirst()];for(int i = k; i < n; i++){while(!queue.isEmpty() && nums[i] >= nums[queue.peekLast()]){queue.pollLast();}queue.offer(i);while(queue.peekFirst() <= i - k){queue.pollFirst();}result[i - k + 1] = nums[queue.peekFirst()];}return result;}
}
http://www.dtcms.com/a/563292.html

相关文章:

  • 盐城网站建设流程广告公司电话
  • 网站建设制作汕头淘宝卖东西如何在网站做宣传
  • 吉他谱网站如何建设网站建设app手机下载
  • 网站建设钅金手指排名专业团队图片张伟原图
  • 免费信息发布网站有哪些手机网站源码最好
  • 做网站龙头微信小程序超市平台
  • 上海市住房和城乡建设厅网站首页有域名怎样建设网站
  • 怎么用wordpress建站北京网站建设咸宁
  • 个人网站能百度推广吗网站建设公司合同模板
  • 物流网站建设实例怎样进入12345的公众号
  • 科院公司网站建设目标是什么自考本科含金量高吗
  • 怎么做专题网站异地网站建设公司
  • 深圳网站建设zhaoseo成都网站建设时代汇创
  • 网站开发 进度表长沙手机网站建设哪些内容
  • wordpress请求汕头百度seo电话
  • 网站建设鸿儒一元云购网站建设模块
  • 网站更新维护 怎么做一个虚拟主机怎么做多个网站
  • 定西企业网站制作广告公司联系方式
  • 个人网站的建设参考文献保定网站制作
  • 网站建设的目入图片html网页制作过程
  • 网站刚建好怎么做能让百度收录网站安全检测服务
  • 做宣传网站需要多少钱如何做展示型网站
  • 公司建站后还要录入网页吗网站分页设计作用
  • 个人能免费做网站什么网站招聘外国人做兼职
  • 网站输入卡密提取怎么做php网站培训班
  • 淘客网站推广怎么做网站开发多语言
  • seo网站分析工具网站开发职业规划实施
  • 哈尔滨做企业网站一站式做网站哪家专业
  • 城乡住房建设厅网站首页跳转网站正在建设中
  • 搭设企业网站教程电脑怎么做网站赚钱