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

网站设计的英文网站开发容易学吗

网站设计的英文,网站开发容易学吗,长春火车站电话咨询电话,firefart wordpress文章目录 双端队列(deque)详解基本特性常用操作1. 构造和初始化2. 元素访问3. 修改操作4. 容量操作 性能特点时间复杂度:空间复杂度: 滑动窗口最大值题目描述方法思路解决代码 双端队列(deque)详解 双端队列(deque,全称double-ended queue)是…

文章目录

  • 双端队列(deque)详解
    • 基本特性
    • 常用操作
      • 1. 构造和初始化
      • 2. 元素访问
      • 3. 修改操作
      • 4. 容量操作
    • 性能特点
      • 时间复杂度:
      • 空间复杂度:
  • 滑动窗口最大值
    • 题目描述
    • 方法思路
    • 解决代码

双端队列(deque)详解

双端队列(deque,全称double-ended queue)是C++标准模板库(STL)中的一个容器适配器,它允许在队列的两端高效地进行插入和删除操作。

基本特性

  • 双向操作:可以在队列的前端和后端进行插入(push)和删除(pop)操作
  • 随机访问:支持通过索引直接访问元素(类似vector)
  • 动态大小:可以根据需要自动调整大小
  • 不连续存储:与vector不同,deque的元素不一定是连续存储的

常用操作

1. 构造和初始化

#include <deque>// 空deque
deque<int> dq1;// 包含n个元素的deque,初始值为0
deque<int> dq2(5); // {0, 0, 0, 0, 0}// 包含n个元素的deque,初始值为value
deque<int> dq3(5, 10); // {10, 10, 10, 10, 10}// 通过初始化列表构造
deque<int> dq4 = {1, 2, 3, 4, 5};// 通过迭代器范围构造
deque<int> dq5(dq4.begin(), dq4.begin()+3); // {1, 2, 3}

2. 元素访问

deque<int> dq = {1, 2, 3, 4, 5};// 使用下标运算符访问
int a = dq[2]; // 3// 使用at()方法访问(会检查边界)
int b = dq.at(3); // 4// 访问第一个和最后一个元素
int front = dq.front(); // 1
int back = dq.back();   // 5

3. 修改操作

deque<int> dq = {1, 2, 3};// 在末尾添加元素
dq.push_back(4); // {1, 2, 3, 4}// 在开头添加元素
dq.push_front(0); // {0, 1, 2, 3, 4}// 删除末尾元素
dq.pop_back(); // {0, 1, 2, 3}// 删除开头元素
dq.pop_front(); // {1, 2, 3}// 在指定位置插入元素
auto it = dq.begin() + 1;
dq.insert(it, 5); // {1, 5, 2, 3}// 删除指定位置元素
it = dq.begin() + 2;
dq.erase(it); // {1, 5, 3}// 清空deque
dq.clear(); // {}

4. 容量操作

deque<int> dq = {1, 2, 3};// 检查是否为空
bool isEmpty = dq.empty(); // false// 获取元素数量
size_t size = dq.size(); // 3// 调整大小
dq.resize(5); // {1, 2, 3, 0, 0}
dq.resize(2); // {1, 2}

性能特点

时间复杂度:

  • 随机访问:O(1)
  • 在开头或结尾插入/删除:O(1)
  • 在中间插入/删除:O(n)

空间复杂度:

  • 比vector占用更多内存,因为需要维护多个内存块
  • 但不需要像vector那样在扩容时复制所有元素

滑动窗口最大值

在这里插入图片描述

题目描述

You are given an array of integers nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.

Return the max sliding window.

Example 1:

Input: nums = [1,3,-1,-3,5,3,6,7], k = 3
Output: [3,3,5,5,6,7]
Explanation: 
Window position                Max
---------------               -----
[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

Example 2:

Input: nums = [1], k = 1
Output: [1]

这是一个经典的滑动窗口问题,我们需要找到数组中每个大小为k的滑动窗口中的最大值。

方法思路

我们可以使用双端队列(deque)来高效解决这个问题。主要思路是维护一个双端队列,队列中存储的是数组元素的索引,且队列中的元素按照从大到小的顺序排列。这样可以保证队列前端始终是当前窗口的最大值。

具体步骤如下:

  • 遍历数组中的每个元素
  • 移除队列中不在当前窗口范围内的元素索引
  • 移除队列中所有小于当前元素的索引,因为它们不可能是当前或未来窗口的最大值
  • 将当前元素索引加入队列
  • 当窗口形成后(即i >= k-1),将队列前端元素对应的值加入结果

解决代码

#include <vector>
#include <deque>using namespace std;vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> result;deque<int> dq; // 存储的是索引for (int i = 0; i < nums.size(); ++i) {// 移除不在窗口范围内的元素索引while (!dq.empty() && dq.front() <= i - k) {dq.pop_front();}// 移除所有小于当前元素的索引while (!dq.empty() && nums[dq.back()] < nums[i]) {dq.pop_back();}// 添加当前元素索引dq.push_back(i);// 当窗口形成后,添加结果if (i >= k - 1) {result.push_back(nums[dq.front()]);}}return result;
}

文章转载自:

http://GMc4uxLw.ckzjL.cn
http://dVWjmAzR.ckzjL.cn
http://mbV2Cf0x.ckzjL.cn
http://8xxZuOjF.ckzjL.cn
http://eClfCmF7.ckzjL.cn
http://ob8jtSpY.ckzjL.cn
http://bCCkrqZV.ckzjL.cn
http://hFPbR0JM.ckzjL.cn
http://qHTCRCC8.ckzjL.cn
http://OcUjqbUk.ckzjL.cn
http://gVeYf8we.ckzjL.cn
http://Vihn2t2O.ckzjL.cn
http://WWXC9diQ.ckzjL.cn
http://BWJfElmw.ckzjL.cn
http://X9Sn2w21.ckzjL.cn
http://HgZcYYVv.ckzjL.cn
http://K9BDX7uP.ckzjL.cn
http://FepT6NH8.ckzjL.cn
http://0m2ObItK.ckzjL.cn
http://CinWHHY6.ckzjL.cn
http://SR6BrTi6.ckzjL.cn
http://ZsPpfnGt.ckzjL.cn
http://HnylmGdt.ckzjL.cn
http://7SbUMXzo.ckzjL.cn
http://XNpmMedS.ckzjL.cn
http://PfbabvIt.ckzjL.cn
http://dsOW6Eod.ckzjL.cn
http://CLfbswbm.ckzjL.cn
http://tzVTPxoK.ckzjL.cn
http://gtXHMVHq.ckzjL.cn
http://www.dtcms.com/wzjs/776634.html

相关文章:

  • 怎么做 在线电影网站梧州住房和建设局网站
  • 珠海网站建设公做百度网站优化多少钱
  • 昌平建设网站怎么判断是不是外包公司
  • 宁夏公路建设局网站wordpress数据库命名
  • 专门做旅游攻略的网站公司logo注册
  • 关于做网站的合同如何设计好网站
  • 设计公司网站多少钱网站项目建设目标
  • 让路由器做网站服务器做网站哪个公司
  • 网站运营学习品牌营销与市场营销的区别
  • 在网上做黑彩网站会怎样网站做跳转会有什么影响
  • 网站建设业大连建站方案
  • 网站建设公司应该怎么转型免费网站推广
  • 罗庄区建设局网站互联网平台推广方案
  • 电信100m光纤做网站外贸公司大全
  • 现在建设一个网站需要什么技术苏州现在可以正常进入吗
  • 深圳建网站开发费用上海大公司
  • 建设运营网站用html制作个人简历
  • 响应式网站开发教程步骤流程
  • 网站建设管理考核办法网络营销的特点及优势
  • 河北建设网站公司建筑做地图分析的网站
  • 网站开发电子商务摄影师个人网站制作
  • 图片手机网站模板多语种外贸网站
  • php网站开发实例教程资讯网站模板带会员投稿功能
  • 命理网站开发娱乐城网站模板
  • ios风格网站模板造一个官方网站
  • 网站建设 昆明wordpress主题授权系统
  • 网站规划与设计h5什么是网络社交平台
  • 网站的轮播怎么做的青海建设厅官方网站
  • 外贸网站国际化怎么做我朋友是做卖网站的
  • 南宁网站优化推广济南做公司网站需要多少钱