哪家公司建设网站/武汉网站排名提升

哪家公司建设网站,武汉网站排名提升,互联网电商板块火箭发射,网站收录查询方法public class MyStack {int top;Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1new LinkedList<Integer>();q2new LinkedList<Integer>();}public void push(int x) {q2.offer(x);//offer是入队方法while (!q1.isEmpty()){q2.offer(q1.pol…

public class MyStack {int top;Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1=new LinkedList<Integer>();q2=new LinkedList<Integer>();}public void push(int x) {q2.offer(x);//offer是入队方法while (!q1.isEmpty()){q2.offer(q1.poll());//poll是出队方法}Queue<Integer> temp;temp=q1;q1=q2;q2=temp;}public int pop() {return q1.poll();}public int top() {return q1.peek();//peek用于检索但不移除队列的头部元素}public boolean empty() {return q1.isEmpty();}
}

public class MyQueue {Deque<Integer> inStack;Deque<Integer> outStack;public MyQueue() {inStack=new ArrayDeque<Integer>();outStack=new ArrayDeque<Integer>();}public void push(int x) {inStack.push(x);}public int pop() {if(outStack.isEmpty()){intooutStack();}return outStack.pop();}public int peek() {if(outStack.isEmpty()){intooutStack();}return outStack.peek();}public boolean empty() {return inStack.isEmpty()&&outStack.isEmpty();}private void intooutStack(){while (!inStack.isEmpty()){outStack.push(inStack.pop());}}
}/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj = new MyQueue();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.peek();* boolean param_4 = obj.empty();*/

构造函数 MyQueue(): 初始化了两个栈 inStack 和 outStack,分别用于入队和出队操作。

push(int x) 方法: 将元素 x 入队。直接将元素 x 压入 inStack 栈顶。

pop() 方法: 出队操作,返回队列的头部元素并将其移除。首先检查 outStack 是否为空,如果为空,则调用 intooutStack() 方法将 inStack 中的元素逐个弹出并压入 outStack,然后从 outStack 中弹出一个元素作为出队元素。

peek() 方法: 返回队列的头部元素,但不移除。同样,首先检查 outStack 是否为空,如果为空,则调用 intooutStack() 方法将 inStack 中的元素逐个弹出并压入 outStack,然后返回 outStack 栈顶元素。

empty() 方法: 检查队列是否为空。如果 inStack 和 outStack 都为空,则队列为空。

intooutStack() 方法: 将 inStack 中的元素逐个弹出并压入 outStack。这个方法在执行出队操作时会被调用,确保 outStack 中的元素顺序符合队列的先进先出特性。

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;PriorityQueue<int[]> pq = new PriorityQueue<int[]>(new Comparator<int[]>() {public int compare(int[] pair1, int[] pair2) {return pair1[0] != pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];}});for (int i = 0; i < k; ++i) {pq.offer(new int[]{nums[i], i});}int[] ans = new int[n - k + 1];ans[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();}ans[i - k + 1] = pq.peek()[0];}return ans;}
}

PriorityQueue<int[]> pq = new PriorityQueue<int[]>(new Comparator<int[]>() {
            public int compare(int[] pair1, int[] pair2) {
                return pair1[0] != pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];
            }
        });

这段代码创建了一个优先队列 pq,其中存储了整数数组 int[]。在构造优先队列时,通过传入一个自定义的比较器 Comparator<int[]> 来指定元素的比较规则。

比较器中的 compare() 方法定义了元素的比较逻辑。在这个比较器中,首先比较两个元素的第一个元素 pair1[0] 和 pair2[0],如果它们不相等,则按照元素的第一个值从大到小排序,即返回 pair2[0] - pair1[0]。如果第一个元素相等,则继续比较第二个元素 pair1[1] 和 pair2[1],按照第二个元素从大到小排序,即返回 pair2[1] - pair1[1]。

这样定义的比较器保证了优先队列中的元素按照其第一个值从大到小排序,如果第一个值相等,则按照第二个值从大到小排序。这种排序方式可以确保优先队列中的头部元素始终是具有最大值的元素对 [nums[i], i]。

pq.offer(new int[]{nums[i], i});
ChatGPT
在这行代码中,pq.offer(new int[]{nums[i], i}),我们创建了一个整数数组 new int[]{nums[i], i},其中 nums[i] 是当前元素的值,i 是当前元素的索引。然后,我们使用 pq.offer() 方法将这个数组作为一个元素添加到优先队列 pq 中。

这样,每个元素都以 [nums[i], i] 的形式存储在优先队列中,从而实现了按照元素值及其对应的索引进行排序。

对于这行代码 pq.peek()[1] <= i - k,它是在检查当前优先队列头部元素的索引是否小于等于 i - k,如果是,则表示该元素不在当前窗口内。让我来解释一下这行代码的作用:

  • pq.peek():这会返回优先队列 pq 的头部元素,即具有最高优先级的元素,由于我们在构造优先队列时使用了自定义的比较器,头部元素是具有最大值的元素对 [nums[i], i]
  • pq.peek()[1]:这会返回头部元素的索引部分,即 i,这是因为我们将元素对 [nums[i], i] 存入优先队列中,第二个值是元素的索引。
  • i - k:这表示当前窗口的左边界,即当前索引 i 减去窗口的大小 k,这是为了确定当前窗口的范围。

所以,pq.peek()[1] <= i - k 的意思是,如果当前优先队列头部元素的索引小于等于当前窗口的左边界,即头部元素不在当前窗口内,那么我们需要将该元素从队列中弹出。

PriorityQueue 是 Java 中提供的一种优先队列的实现,它是一种特殊的队列,其中的元素被赋予了优先级。在 PriorityQueue 中,元素按照它们的自然顺序或者根据特定的 Comparator 接口进行排序。

  • 当不提供自定义的比较器时,PriorityQueue 将使用元素的自然顺序进行排序。例如,如果队列存储的是整数,则队列将按照整数的大小进行排序,从小到大排列。
  • 当提供了自定义的比较器时,PriorityQueue 将根据指定的比较规则对元素进行排序。

在这段代码中,我们使用了一个自定义的比较器,通过比较元素对 [nums[i], i] 中的第一个值(元素值)来进行排序。如果元素值不相等,则按照元素值从大到小排序;如果元素值相等,则按照第二个值(元素索引)从大到小排序。这样,优先队列中的头部元素始终是具有最大值的元素对 [nums[i], i],从而实现了按照元素值及其对应的索引进行排序。

这段代码是标准的解法,它使用优先队列来解决滑动窗口最大值的问题。让我来逐步解释它的实现:

  1. 初始化

    • 创建了一个优先队列 pq,用于存储当前窗口内的元素,并按照元素值从大到小排序,如果元素值相等,则按照索引从大到小排序。
    • 使用一个循环遍历数组 nums 的前 k 个元素,将它们作为初始窗口,并加入优先队列 pq 中。
  2. 计算窗口最大值

    • 初始化一个长度为 n - k + 1 的数组 ans,用于存储每个窗口的最大值。
    • 将第一个窗口的最大值(即优先队列的头部元素的值)存入 ans 数组的第一个位置。
    • 从第 k 个元素开始遍历数组 nums,并将每个元素加入到优先队列 pq 中。
    • 对于每个窗口:
      • 如果当前优先队列头部元素的索引小于等于 i - k,表示该元素不在当前窗口内,需要将其从队列中弹出。
      • 将当前窗口的最大值存入 ans 数组中。
  3. 返回结果

    • 返回 ans 数组,其中存储了每个窗口的最大值。

这种实现方式利用了优先队列的特性,实现了对滑动窗口内的元素进行快速查找最大值的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HPTNet:为点云提取表面特征

论文题目&#xff1a;High-Performance Feature Extraction Network for Point Cloud Semantic Segmentation 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/10474110 文章目录 1. 平面几何特征的提取2. 几何和语义特征的分开处理3. Transformer模块4. 结…

MySQL基础知识——MySQL事务

事务背景 什么是事务&#xff1f; 一组由一个或多个数据库操作组成的操作组&#xff0c;能够原子的执行&#xff0c;且事务间相互独立&#xff1b; 简单来说&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 注&#xff1a;MyS…

代码随想录算法训练营第一天 | 704. 二分查找 | 27. 移除元素

704. 二分查找 int search(int* nums, int numsSize, int target) {int left 0, right numsSize, mid;while (left < right) {mid left (right -left) / 2;if (nums[mid] < target) {left mid 1;} else if (nums[mid] > target) {right mid;} else {return mid…

CMMI认证是什么?如何确定CMMI认证的目标和范围

CMMI&#xff08;Capability Maturity Model Integration&#xff09;认证是一种用于评估和改进组织软件和项目管理过程的框架。它由美国国防部软件工程所&#xff08;SEI&#xff09;开发&#xff0c;旨在帮助组织提高其软件和项目管理的成熟度水平。 CMMI认证的意义在于&…

哪里有su材质库免费下载?

su材质库是一套草图大师的通用材质大全&#xff0c;包含多种不同类型的材质包和材质贴图&#xff0c;使得设计师能够轻松在电脑上进行直观的构思。对于需要免费下载su材质库的用户&#xff0c;可以尝试通过以下途径获取。 1. 官方网站查找&#xff1a;许多软件都会在官网上提供…

第十六篇:springboot案例

文章目录 一、准备工作1.1 需求说明1.2 环境搭建1.3 开发规范1.4 思路 二、部门管理2.1 查询部门2.2 删除部门2.3 新增部门2.4 修改部门2.5 RequestMapping 三、员工管理3.1 分页查询3.2 删除员工3.3 新增员工3.3.1 新增员工3.3.2 文件上传 3.4 修改员工3.4.1 页面回显3.4.2 修…

【数据结构】-- 栈和队列

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

二十一.订单分析RFM模型

目录 1.数据读取 2.数据清洗 3.可视化分析 做图吧 4.RFM模型 本次数据条数为: 51101 import pandas as pd import numpy as np 1.数据读取 #读取文件 df_data pd.read_csv("../data/dataset.csv",encoding"gbk") df_data#因为列标签都是英文,这里我…

通讯录的实现(顺序表)

前言&#xff1a;上篇文章我们讲解的顺序表以及顺序表的具体实现过程&#xff0c;那么我们的顺序表在实际应用中又有什么作用呢&#xff1f;今天我们就基于顺序表来实现一下通讯录。 目录 一.准备工作 二.通讯录的实现 1.通讯录的初始化 2.插入联系人 3.删除联系人 4.…

手机副业赚钱秘籍:让你的手机变成赚钱利器

当今社会&#xff0c;智能手机已然成为我们生活不可或缺的一部分。随着技术的飞速进步&#xff0c;手机不再仅仅是通讯工具&#xff0c;而是化身为生活伴侣与工作助手。在这个信息爆炸的时代&#xff0c;我们时常会被一种焦虑感所困扰&#xff1a;如何能让手机超越消磨时光的定…

TinyEMU源码分析之访存处理

TinyEMU源码分析之访存处理 1 访存指令介绍2 指令译码3 地址转换3.1 VA与PA3.2 VA转PA 4 判断地址空间范围5 执行访存操作5.1 访问RAM内存5.2 访问非RAM&#xff08;设备&#xff09;内存 6 访存处理流程图 本文属于《 TinyEMU模拟器基础系列教程》之一&#xff0c;欢迎查看其…

【AI】什么是Ai Agent

什么是AI Agent&#xff1f; AI Agent是指人工智能代理&#xff08;Artificial Intelligence Agent&#xff09;是一种能够感知环境进行自主理解&#xff0c;进行决策和执行动作的智能体。AI Agent具备通过独立思考、调用工具逐步完成给定目标的能力。不同于大模型的区别在于&…

OpenHarmony实战开发-如何使用屏幕属性getDefaultDisplaySync、getCutoutInfo接口实现适配挖孔屏。

介绍 本示例介绍使用屏幕属性getDefaultDisplaySync、getCutoutInfo接口实现适配挖孔屏。该场景多用于沉浸式场景下。 效果图预览 使用说明 1.加载完成后顶部状态栏时间和电量显示位置规避了不可用区域。 实现思路 1.通过setWindowLayoutFullScreen、setWindowSystemBarEn…

代码随想录训练营

Day23代码随想录 669.修剪二叉搜索树 1.题目描述 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有…

Hbase的简单学习一

一 Hbase的搭建与安装 1.1 安装 1.准备好文件&#xff0c;上传到Linux上 2.解压文件 tar zxvf hbase-2.2.7-bin.tar.gz -C ../ ../是解压到的路径 1.2 配置文件 1.配置环境变量 去etc/profile目录下 export HBASE_HOME/usr/local/soft/hbase-2.2.7 export PATH$PATH:$H…

.NET SignalR Redis实时Web应用

环境 Win10 VS2022 .NET8 Docker Redis 前言 什么是 SignalR&#xff1f; ASP.NET Core SignalR 是一个开放源代码库&#xff0c;可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项&#xff1a; 需要从服…

AI预测福彩3D第38弹【2024年4月17日预测--第8套算法开始计算第6次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第5次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;为后续的模型修改和参数调整做铺垫&#xff0c;所以暂时不建议大家盲目跟买~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月17日3D的七码预测结果…

K8S node节点执行kubectl get pods报错

第一个问题是由第二个问题产生的&#xff0c;第二个问题也是最常见的 网上找的都是从master节点把文件复制过来&#xff0c;这样确实可以解决&#xff0c;但是麻烦&#xff0c;有一个node节点还好&#xff0c;如果有多个呢&#xff1f;每个都复制吗&#xff1f;下面是我从外网…

RabbitMQ-核心特性

已经不需要为RabbitMQ交换机的离去而感到伤心了&#xff0c;接下来登场的是RabbitMQ-核心特性!!! 文章目录 核心特性消息过期机制消息确认机制死信队列 核心特性 消息过期机制 官方文档&#xff1a;https://www.rabbitmq.com/ttl.html 可以给每条消息指定一个有效期&#xf…

Ubuntu 20.04.06 PCL C++学习记录(二十五)

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍&#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,&#xff0c;PCL版本为1.10.0&#xff0c;CMake版本为3.16&#xff0c;可用点云下载地址 学习内容 使用渐进形态滤波器分割识别地面回波&#xff0c;即执…