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

力扣 239.滑动窗口最大值

思路

滑动窗口 + 遍历

解题思路

基本思路:使用滑动窗口法遍历数组,动态维护当前窗口的最大值。 特殊情况:该方法有一个缺陷,如果出窗口的元素是当前窗口的最大值max时,接下来的窗口中的最大值就无法确定了,所以就需要遍历新窗口,寻找其中的最大值。

复杂度

  • 时间复杂度: O(N * K)
  • 空间复杂度: O(N)

    代码实现:

    class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;int[] maxNum = new int[n - k + 1];int right = 0;     int max = nums[0]; //记录窗口的最大值int index = 0;     //记录最大值的下标//初始化窗口while(right < k){if(nums[right] >= max){max = nums[right];index = right;}right++;}maxNum[0] = max;//滑动窗口while(right < n){//如果入窗口的元素成为最大值则更新max和indexif(nums[right] >= max){max = nums[right];index = right;}//如果出窗口的元素为最大值,则需要重新寻找当前窗口的最大值及下标if(right-k == index){int[] newMax = findMax(nums,right-k+1,k);max = newMax[0];index = newMax[1];}maxNum[right - k + 1] = max;right++;}return maxNum;}//寻找当前窗口的最大值及其下标public int[] findMax(int[] nums, int start, int k){int[] max = new int[2];max[0] = nums[start];max[1] = start;for(int i = start + 1; i < start + k; i++){if(nums[i] >= max[0]){max[0] = nums[i];max[1] = i;}}return max;}
    }

    在我第一次写的时候直接就在每个窗口中加findMax函数无脑遍历,运行后发现超时,代码时间复杂度是 O(N * K)。随后按自己想法改了改代码,改成现在这个,最坏时间复杂度还是O(N * K),但是再一次运行发现可以通过。后面看了看官方题解,题解一的思路和我的大致一样但是用了优先级队列,运行速度方面能比自己的快,主要区别在于自己的findMax函数用遍历的方式找最大值及下标,优先级队列底层则用的堆,其复杂度为logN级别。

    相关文章:

    力扣 239.滑动窗口最大值

    思路 滑动窗口 遍历 解题思路 基本思路&#xff1a;使用滑动窗口法遍历数组&#xff0c;动态维护当前窗口的最大值。 特殊情况&#xff1a;该方法有一个缺陷&#xff0c;如果出窗口的元素是当前窗口的最大值max时&#xff0c;接下来的窗口中的最大值就无法确定了&#xff0c;所…...

    堆的实现——堆的应用(堆排序)

    文章目录 1.堆的实现2.堆的应用--堆排序 大家在学堆的时候&#xff0c;需要有二叉树的基础知识&#xff0c;大家可以看我的二叉树文章&#xff1a;二叉树 1.堆的实现 如果有⼀个关键码的集合 K {k0 , k1 , k2 , …&#xff0c;kn−1 } &#xff0c;把它的所有元素按完全⼆叉树…...

    【3】高并发导出场景下,服务器性能瓶颈优化方案-文件压缩

    使用EasyExcel导出并压缩文件是一种高效且常见的解决方案&#xff0c;尤其适用于需要处理大量数据的场景。 1. 导出多个Excel文件并压缩成ZIP文件的基本流程 &#xff08;1&#xff09;数据准备&#xff1a;从数据库或其他数据源获取需要导出的数据&#xff0c;并将其存储在Ja…...

    Ubuntu20.04 本地部署 DeepSeek-R1

    一、下载ollama 打开 ollama链接&#xff0c;直接终端运行提供的命令即可。如获取的命令如下&#xff1a; curl -fsSL https://ollama.com/install.sh | sh确保是否安装成功可在终端输入如下命令&#xff1a; ollama -v注意&#xff1a; 如遇到Failed to connect to github.…...

    2025年2月6日笔记

    第 12 届蓝桥杯 C 青少组中 / 高级组选拔赛&#xff08; STEMA &#xff09; 2020 年 11 月 22 日 真题第一题 解题思路&#xff1a; 第一&#xff1a;因为有整数集合的求和字样&#xff08;所以用for循环来做&#xff09; 第二&#xff1a;题中让我们累加1到N&#xff0c;所…...

    Linux: 网络基础

    1.协议 为什么要有协议&#xff1a;减少通信成本。所有的网络问题&#xff0c;本质是传输距离变长了。 什么是协议&#xff1a;用计算机语言表达的约定。 2.分层 软件设计方面的优势—低耦合。 一般我们的分层依据&#xff1a;功能比较集中&#xff0c;耦合度比较高的模块层…...

    CSS 背景与边框:从基础到高级应用

    CSS 背景与边框&#xff1a;从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码&#xff1a;设置背景颜色 1.2 背景图像示例代码&#xff1a;设置背景图像 1.3 控制背景平铺行为示例代码&#xff1a;控制背景平铺 1.4 调整背景图像大小示例代码&#xff1a;调整背景图像大小…...

    GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。

    提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主机 download.docker.com (download.docker.…...

    ES6 const 使用总结

    1. 声明不可变性 1.1 基本类型的不可变性 // 基本类型声明后不能修改 const name John; name Jane; // TypeError: Assignment to constant variableconst age 25; age 26; // TypeError: Assignment to constant variableconst isValid true; isValid false; // Ty…...

    大学资产管理系统中的下载功能设计与实现

    大学资产管理系统是高校信息化建设的重要组成部分&#xff0c;它负责记录和管理学校内所有固定资产的信息。随着信息技术的发展&#xff0c;下载功能成为提高资产管理效率的关键环节之一。 系统架构的设计是实现下载功能的基础。一个良好的系统架构能够确保数据的高效传输和存储…...

    【华为OD机试python】日志采集系统【 E卷 | 2023 Q1 |100分】

    目录 题目描述 输入描述 输出描述 示例1 输入输出示例仅供调试,后台判题数据一般不包含示例 说明 示例2 输入输出示例仅供调试,后台判题数据一般不包含示例 说明 解题思路 考点 代码 题目描述 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采…...

    园区网设计与实战

    想做一个自己学习的有关的csdn账号&#xff0c;努力奋斗......会更新我计算机网络实验课程的所有内容&#xff0c;还有其他的学习知识^_^&#xff0c;为自己巩固一下所学知识。 我是一个萌新小白&#xff0c;有误地方请大家指正&#xff0c;谢谢^_^ 文章目录 前言 这个实验主…...

    DeepSeek-R1 本地电脑部署 Windows系统 【轻松简易】

    本文分享在自己的本地电脑部署 DeepSeek&#xff0c;而且轻松简易&#xff0c;快速上手。 这里借助Ollama工具&#xff0c;在Windows系统中进行大模型部署~ 1、安装Ollama 来到官网地址&#xff1a;Download Ollama on macOS 点击“Download for Windows”下载安装包&#x…...

    git进阶--5---git reset 和 git revert 的区别与联系

    git进阶–5—git reset 和 git revert 的区别与联系 1. 相同点 都是对版本做出一些改变 2. 不同点 git reset 是进行版本回退&#xff0c;根据不同的参数&#xff0c;是定是否复原索引和工作区git revert 是撤销上一次的提交&#xff0c;不会改变过去的历史&#xff0c;安全…...

    AI绘画:解锁商业设计新宇宙(6/10)

    1.AI 绘画&#xff1a;商业领域的潜力新星 近年来&#xff0c;AI 绘画技术以惊人的速度发展&#xff0c;从最初简单的图像生成&#xff0c;逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化&#xff0c;AI 绘画工具如 Midjourney、Stable Diffu…...

    单硬盘槽笔记本更换硬盘

    背景 本人的笔记本电脑只有一个硬盘槽&#xff0c;而且没有M.2的硬盘盒&#xff0c;只有一个移动硬盘 旧硬盘&#xff1a;512G 新硬盘&#xff1a;1T 移动硬盘&#xff1a;512G 参考链接&#xff1a;https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…...

    保姆级教程:利用Ollama与Open-WebUI本地部署 DeedSeek-R1大模型

    1. 安装Ollama 根据自己的系统下载Ollama&#xff0c;我的是Linux&#xff0c;所以我使用如下命令进行下载安装&#xff1a; curl -fsSL https://ollama.com/install.sh | sh2. 安装Open-WebUI 使用 Docker 的方式部署 open-webui &#xff0c;使用gpu的话按照如下命令进行 …...

    机器学习模型--线性回归、逻辑回归、分类

    一、线性回归 级别1&#xff1a;简单一元线性回归&#xff08;手工实现&#xff09; import numpy as np import matplotlib.pyplot as plt# 生成数据 X np.array([1, 2, 3, 4, 5]) y np.array([2, 4, 5, 4, 5])# 手动实现梯度下降 def gradient_descent(X, y, lr0.01, epo…...

    使用scoop 下载速度慢怎么办

    在国内使用 Scoop 下载速度慢是一个常见问题&#xff0c;主要是因为 Scoop 默认的软件源&#xff08;bucket&#xff09;和下载服务器通常位于国外。以下是一些提高下载速度的方法&#xff1a; 1. 更换 Scoop 镜像源&#xff08;Bucket 镜像&#xff09;&#xff1a; 原理&…...

    Kafka 可靠性探究—副本刨析

    Kafka 的多副本机制提升了数据容灾能力。 副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据&#xff1b;服务副本指多个节点提供同样的服务&#xff0c;每个节点都有能力接收来自外部的请求并进行相应的处理。 1 副本刨析 1.1 相关概念 AR&…...

    openwebui入门

    1 简介 ‌Open WebUI‌&#xff08;网址是openwebui.com&#xff09;是一个高度可扩展、功能强大且用户友好的自托管Web用户界面&#xff0c;专为完全离线操作设计&#xff0c;编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…...

    Windows下怎么安装FFFmpeg呢?

    在Windows下使用Open-webui报错&#xff0c;说Couldnt find ffmpeg or avconv,解决open-webui报错Couldn‘t find ffmpeg or avconv-CSDN博客于是尝试解决问题&#xff0c;那么Windows下怎么安装FFFmpeg呢&#xff1f; 尝试了两种方法。 第一种方法pip安装&#xff08;失败&…...

    无公网IP 外网访问 Jupyter Notebook

    Jupyter Notebook 是一个开源的Web应用程序&#xff0c;允许用户创建和共享包含实时代码、方程式、可视化和叙述文本的文档。它支持超过40种编程语言。 本文将详细的介绍如何用 Docker 在本地安装部署 Jupyter Notebook&#xff0c;并结合路由侠内网穿透实现外网访问本地部署的…...

    C语言按位取反【~】详解,含原码反码补码的0基础讲解【原码反码补码严格意义上来说属于计算机组成原理的范畴,不过这也是学好编程初级阶段的必修课】

    目录 概述【适合0基础看的简要描述】&#xff1a; 上述加粗下划线的内容提取版&#xff1a; 从上述概述中提取的核心知识点&#xff0c;需背诵&#xff1a; 整数【包含整数&#xff0c;负整数和0】的原码反码补码相互转换的过程图示&#xff1a; 过程详细刨析&#xff1a;…...

    基于 .NET 8.0 gRPC通讯架构设计讲解,客户端+服务端

    目录 1.简要说明 2.服务端设计 2.1 服务端创建 2.2 服务端设计 2.3 服务端业务模块 3.客户端设计-控制台 4.客户端设计-Avalonia桌面程序 5.客户端设计-MAUI安卓端程序 1.简要说明 gRPC 一开始由 google 开发&#xff0c;是一款语言中立、平台中立、开源的远程过程调用…...

    深入浅出 DeepSeek V2 高效的MoE语言模型

    今天&#xff0c;我们来聊聊 DeepSeek V2 高效的 MoE 语言模型&#xff0c;带大家一起深入理解这篇论文的精髓&#xff0c;同时&#xff0c;告诉大家如何将这些概念应用到实际中。 &#x1f31f; 什么是 MoE&#xff1f;——Mixture of Experts&#xff08;专家混合模型&#x…...

    玩转Gin框架:Golang使用Gin完成登录流程

    文章目录 背景基于Token认证机制简介常见的Token类型Token的生成和验证在项目工程里创建jwt.go文件根目录新建.env文件 创建登录接口 /loginToken认证机制的优点 背景 登录流程&#xff0c;相信大家都很熟悉的。传统网站采用session后端验证登录状态&#xff0c;大致流程如下&…...

    Java实习生面试题汇总

    Java实习生面试题汇总 简介 本人是二本大三学生&#xff0c;下半年大四。暑假在上海这边找实习工作&#xff0c;面了几家公司&#xff0c;所问到的问题记录在下面。 因为是在校生&#xff0c;没任何实习经历&#xff0c;一般找我面试的都是小公司&#xff0c;一般问的比较简…...

    Java 如何覆盖第三方 jar 包中的类

    目录 一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理 背景&#xff1a; 在我们日常的开发中&#xff0c;经常需要使用第三方的 jar 包&#xff0c;有时候我们会发现第三方的 jar 包中的某一个类有问题&#xff0c;或者我们需要定制化修改其中的逻辑&#xff0c…...

    解密 Java Lambda 表达式中的 “effectively final“ 陷阱

    文章目录 1. 引言 (Introduction)1.1. 核心问题1.2. 博客目标1.3. 目标读者1.4. 阅读收获 2. 重现错误 (Reproducing the Error)2.1. 代码示例 (LambdaErrorExampleCorrected.java)2.2. 逐步演示2.2.1. 没有错误的代码版本 (list 满足 effectively final)2.2.2. 导致错误的代码…...