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

设计师招聘网站有哪些百度的合作网站有哪些

设计师招聘网站有哪些,百度的合作网站有哪些,周口网站建设.com,虚拟机做局域网网站服务器每日一题(LeetCode)----栈和队列–滑动窗口最大值 1.题目(239. 滑动窗口最大值) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 …

每日一题(LeetCode)----栈和队列–滑动窗口最大值

1.题目(239. 滑动窗口最大值)

  • 给你一个整数数组 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], k = 1
    输出:[1]
    

    提示:

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

2.解题思路

思路一:使用优先队列

优先队列的底层实现是堆,默认是大顶堆

1.我们先创建一个优先队列底层是大顶堆的,便于我们维护最大值,且这个优先队列中的每一个元素都是二元组的(每一个二元组的元素的第一个表示的是数组中的一个数,第二个表示的是这个数在数组中对应的下标),便于我们之后将不在滑动窗口范围内的元素删除 然后再创建一个动态数组用来存每一个滑动窗口的最大值

2.初始时,我们先根据k变量的大小,把数组的前k个元素连带着它们的下标放入到优先队列中去

3.我们从第k+1个元素开始向后遍历,每遍历到一个元素,将当前元素连带着它的下标作为一个二元组元素放入到优先队列中去,然后将优先队列的首元素中存的下标与当前滑动窗口的左边界进行比较如果比左边界小那么就删除当前优先队列的首元素直到优先队列的首元素中存的下标比左边界大结束,然后将当前优先队列首元素存的值放入到动态数组中去,继续向后遍历

在滑动窗口中,在这种情况下,这个值在数组 nums\textit{nums}nums 中的位置出现在滑动窗口左边界的左侧。因此,当我们后续继续向右移动窗口时,这个值就永远不可能出现在滑动窗口中了,我们可以将其永久地从优先队列中移除。

我们不断地移除堆顶的元素,直到其确实出现在滑动窗口中。此时,堆顶元素就是滑动窗口中的最大值。

思路来源:力扣官方题解
链接:https://leetcode.cn/problems/sliding-window-maximum/

思路二:双向队列(单调队列)

1.我们先创建一个双向队列(单调队列),这个队列存的是数组中元素的下标,我们要保证这个队列中存的元素的下标对应的数是递减的,然后我们再创建一个动态数组用来存每一个滑动窗口的最大值

2.初始时,我们先根据k变量的大小,先对数组中前k个元素进行处理,当队列为空时,我们直接把当前遍历到的元素对应的下标放入到队列末尾,当队列不为空时,且当前遍历到的元素的值大于队列末尾下标所对应的数的值,那么我们删除队列的末尾元素,继续与队列末尾元素进行比较,直到当前遍历到的元素的值小于队列末尾下标所对应的数的值,我们将当前元素对应的下标放入到队列的末尾

3.我们从第k+1个元素开始向后遍历,每遍历到一个元素,看队列是否为空,当队列为空时,我们直接把当前遍历到的元素对应的下标放入到队列末尾,当队列不为空时,且当前遍历到的元素的值大于队列末尾下标所对应的数的值,那么我们删除队列的末尾元素,继续与队列末尾元素进行比较,直到当前遍历到的元素的值小于队列末尾下标所对应的数的值,我们将当前元素对应的下标放入到队列的末尾,再将队列的首元素的值与当前滑动窗口的左边界进行比较,如果比左边界小那么就删除当前队列的首元素直到队列的首元素的值比左边界大结束,然后将当前队列首元素在数组中对应的值放入到动态数组中去,继续向后遍历

思路来源:力扣官方题解
链接:https://leetcode.cn/problems/sliding-window-maximum/

3.写出代码

思路一的代码

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {priority_queue<pair<int,int>> q;int n=nums.size();for(int i=0;i<k;i++){q.emplace(nums[i],i);}vector<int> ans={q.top().first};for(int i=k;i<n;i++){q.emplace(nums[i],i);while(q.top().second<=i-k){q.pop();}ans.push_back(q.top().first);}return ans;}
};
思路来源:力扣官方题解
链接:https://leetcode.cn/problems/sliding-window-maximum/

思路二的代码

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {deque<int> q;int n=nums.size();for(int i=0;i<k;i++){while(!q.empty()&&nums[i]>=nums[q.back()]){q.pop_back();}q.push_back(i);}vector<int> ans={nums[q.front()]};for(int i=k;i<n;i++){while(!q.empty()&&nums[i]>=nums[q.back()]){q.pop_back();}q.push_back(i);while(q.front()<=i-k){q.pop_front();}ans.push_back(nums[q.front()]);}return ans;}
};
思路来源:力扣官方题解
链接:https://leetcode.cn/problems/sliding-window-maximum/
http://www.shuangfujiaoyu.com/news/49629.html

相关文章:

  • 网站如何做防劫持网络推广竞价
  • 嘉兴市住房和城乡建设局门户网站济宁百度推广公司有几家
  • wordpress客户端登录优化大师免费下载
  • 自己做一网站 多做宣传.刷推广链接人数的软件
  • wordpress301跳转宁波seo优化公司
  • 武汉网站建设公司排名上海谷歌优化
  • icp备案是网站上线前电商推广方案
  • 网站花瓣飘落的效果怎么做防控措施持续优化
  • 信息手机网站模板下载软件百度seo优化技巧
  • 手机建站服务2024年的新闻时事热点论文
  • 楚雄网站建设图片外链上传网站
  • 网页设计制作网站步骤阿里云搜索引擎网址
  • 5g互联如何取消网站备案湖南疫情最新消息今天
  • 两江新区建设管理局网站精准推广引流5000客源
  • 数字资产交易网站建设济源网络推广
  • 玛迪做网站写手代写平台
  • 深圳网站建设有免费的吗市场调研方案怎么写
  • 网站开发网百度热搜高考大数据
  • 好点的开发网站的公司制作公司网站大概多少钱
  • 自己怎么做网站卖东西外汇seo公司
  • 张家港做网站营销工具
  • 人力资源和社会保障部社会保险事业管理中心名风seo软件
  • 莱西做网站seo兼职招聘
  • 广州 互联网公司 网站首页南宁优化网站收费
  • 北京市网站建设公司常用的网络推广方法
  • 网站建设中存在的问题模板建站多少钱
  • 中国做的网站国外能打开吗全网引擎搜索
  • 太原网站建设策划百度百度地图
  • 做网站是域名怎么申请正规接单赚佣金的app
  • 安徽省建设厅网站证书查询自己的网站怎么做seo