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

网站注册界面代码关键词在线听免费

网站注册界面代码,关键词在线听免费,做婚庆的网站有哪些内容,普通电脑怎么做网站服务器leetcode原题链接 题目描述: 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例1: 输入:nums [1,…

leetcode原题链接

题目描述:

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

返回 滑动窗口中的最大值

示例1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       31 [3  -1  -3] 5  3  6  7       31  3 [-1  -3  5] 3  6  7       51  3  -1 [-3  5  3] 6  7       51  3  -1  -3 [5  3  6] 7       61  3  -1  -3  5 [3  6  7]      7

示例2

输入:nums = [1,3,0,2,4]
输出:0
解释:
nums 无论怎么变化总是有 3 分。
所以我们将选择最小的 k,即 0。

提示

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104
  • 1 <= k <= nums.length

解题思路:

方法一:单调队列

单调队列:队列中的元素是单调递增或单调递减的队列就是单调队列。


  1. 维护队列中的元素递增

对于这道题需要维护一个单调递增的队列。
在这里插入图片描述

由队尾到队头 元素是单调递增的。如果要入队元素大于队尾元素,则队尾元素出队,这是个循环操作,如下:

while(deque.peekLast() < newElement){deque.pollLast();
}
deque.push(newElement); // 新元素入队

  1. 如何保证队列中的元素是窗口内的,因为窗口一直在向右移动?

在这里插入图片描述

初始时,窗口为1,队列中元素为9, 8, 7。窗口向右移动时(窗口2)发现9已不是窗口中的元素,但9依然在队列中,且9为队列的队头元素,需要将9从队列的队头弹出。所以需要进行如下判断:

if(deque.peekFirst() == v){ // v为上一个窗口最左边的值。deque.poolFirst();
}

整体代码如下:

public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;int[] ans = new int[n - k + 1];Deque<Integer> deque = new LinkedList<>();int idx = 0;for(int i = 0; i < nums.length; i++){// 保证队列中的元素是窗口内的if(!deque.isEmpty() && i - k>= 0 && nums[i - k] == deque.peekFirst()){deque.pollFirst();}// 维护队列中的元素是递增的while (!deque.isEmpty() && nums[i] > deque.peekLast()){deque.pollLast();}deque.addLast(nums[i]);if(i>= k - 1){ans[idx++] = deque.peekFirst();}}return ans;
}

方法二:线段树

百度百科:线段树


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEboTtnz-1690452411315)(D:\ProgramFiles\Typora\typora-images\image-20230727175053720.png)]

线段树中的每个节点存储的是这个区间的最大值。

整体代码如下:

public int[] maxSlidingWindow(int[] nums, int k) {int len = nums.length;int[] ans = new int[len - k + 1];this.tr = new Node[len * 4+1];build(1,1,len);for(int i = 0; i<len;i++){update(1,i+1,nums[i]);}for(int i = 0; i< len -k+1;i++){ans[i] = query(1,i+1,i+k);}return ans;
}class Node {int l, r, v;Node(int l, int r) {this.l = l;this.r = r;v = Integer.MIN_VALUE;}
}Node[] tr;void pushup(int u) {tr[u].v = Math.max(tr[u << 1].v, tr[u << 1 | 1].v);
}void build(int u, int l, int r) {tr[u] = new Node(l, r);if (l != r) {int mid = tr[u].l+tr[u].r >> 1;build(u << 1, l, mid);build(u << 1 | 1, mid + 1, r);}
}void update(int u, int x, int v){if(x== tr[u].l&&tr[u].r==x){tr[u].v = Math.max(tr[u].v, v);} else{int mid = tr[u].l+tr[u].r>>1;if(x<=mid){update(u<<1,x,v);} else{update(u<<1|1,x,v);}pushup(u);}
}
int query(int u, int l, int r){if(l<= tr[u].l&&tr[u].r<=r){return tr[u].v;} else{int mid = tr[u].l+tr[u].r>>1;int ans = Integer.MIN_VALUE;if(l<=mid){ans =query(u<<1,l,r);} if(r>mid){ans = Math.max(query(u<<1|1,l,r),ans);}return ans;}
}
http://www.shuangfujiaoyu.com/news/54622.html

相关文章:

  • 有做二手厨房设备的网站吗会员制营销方案
  • 怎样免费做网站推广网站推广途径和推广要点
  • 做网站 附加信息绍兴seo网站推广
  • 专业网站的建设网站的优化和推广方案
  • 中小企业公共服务平台网站建设百度手机助手官方正版
  • 网站安全监测如何去推广
  • 广州网站建设找新际app推广赚佣金
  • 一个网站里有两个网页怎么做宁波seo推广哪家好
  • 网站建设编辑关键词调价工具哪个好
  • 保健品网站建设背景长春网站建设开发
  • 美女做短视频网站如何创建自己的网址
  • 网络架构模式广州百度提升优化
  • 天台县建设规划局网站世界杯竞猜
  • 烟台网站制作设计代写企业软文
  • 网站建设网站建品牌推广与传播怎么写
  • 伊春住房和城乡建设局网站网站设计方案模板
  • 智能建站设计正能量网站地址链接免费
  • 扁平化设计 科技感网站素材岳阳seo公司
  • 如何做网站的外部链接国际重大新闻
  • 网站seo应用企业网站设计规范
  • 电脑记事本做网站北京网站优化方法
  • 个人网页制作成品免费seo关键词工具
  • 网站建设讯美深圳seo优化排名公司
  • 做网站实例教程百度推广代理商加盟
  • wordpress主题添加seo优化关键词
  • 镇江市建设工程网站网站seo排名公司
  • 做网站界面关键词名词解释
  • 个人工作室网站备案seo网站排名优化公司
  • 美颜秘籍网站建设seo工作内容有哪些
  • 创业如何进行网站建设武汉服装seo整站优化方案