Python算法——滑动窗口问题
关于滑动窗口的概念,请自行到网上搜索相关资料,了解清楚再看本博客。
一、子组数最大平均数
LeetCode 第643题:https://leetcode.cn/problems/maximum-average-subarray-i/
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。
任何误差小于 10-5 的答案都将被视为正确答案。
输入:nums = [1,12,-5,-6,50,3], k = 4 输出:12.75 解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
class Solution:def findMaxAverage(self, nums: List[int], k: int) -> float:# Step 1# 定义需要维护的变量# 本题求最大平均值 (其实就是求最大和),所以需要定义sum_, 同时定义一个max_avg (初始值为负无穷)sum_, max_avg = 0, -math.inf# Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口start = 0for end in range(len(nums)):# Step 3: 更新需要维护的变量 (sum_, max_avg), 不断把当前值积累到sum_上sum_ += nums[end]if end - start + 1 == k:max_avg = max(max_avg, sum_ / k)# Step 4# 根据题意可知窗口长度固定,所以用if# 窗口首指针前移一个单位保证窗口长度固定, 同时提前更新需要维护的变量 (sum_)if end >= k - 1:sum_ -= nums[start]start += 1# Step 5: 返回答案return max_avg
二、至多包含两个不同字符的最长子串
LeetCode 第159题:https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/
class Solution:def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:# Step 1: # 定义需要维护的变量, 本题求最大长度,所以需要定义max_len,# 该题又涉及计算不重复元素个数,因此还需要一个哈希表max_len, hashmap = 0, {}# Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口start = 0for end in range(len(s)):# Step 3# 更新需要维护的变量 (max_len, hashmap)# 首先,把当前元素的计数加一# 一旦哈希表长度小于等于2(之多包含2个不同元素),尝试更新最大长度tail = s[end]hashmap[tail] = hashmap.get(tail, 0) + 1if len(hashmap) <= 2:max_len = max(max_len, end - start + 1)# Step 4: # 根据题意, 题目的窗口长度可变: 这个时候一般涉及到窗口是否合法的问题# 这时要用一个while去不断移动窗口左指针, 从而剔除非法元素直到窗口再次合法# 哈希表长度大于2的时候 (说明存在至少3个重复元素),窗口不合法# 所以需要不断移动窗口左指针直到窗口再次合法, 同时提前更新需要维护的变量 (hashmap)while len(hashmap) > 2:head = s[start]hashmap[head] -= 1if hashmap[head] == 0:del hashmap[head]start += 1# Step 5: 返回答案 (最大长度)return max_len
三、无重复字符最长字串
LeetCode 第3题:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 'abc',所以其长度为 3。
class Solution:def findMaxAverage(self, nums: List[int], k: int) -> float:# Step 1# 定义需要维护的变量# 本题求最大平均值 (其实就是求最大和),所以需要定义sum_, 同时定义一个max_avg (初始值为负无穷)sum_, max_avg = 0, -math.inf# Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口start = 0for end in range(len(nums)):# Step 3: 更新需要维护的变量 (sum_, max_avg), 不断把当前值积累到sum_上sum_ += nums[end]if end - start + 1 == k:max_avg = max(max_avg, sum_ / k)# Step 4# 根据题意可知窗口长度固定,所以用if# 窗口首指针前移一个单位保证窗口长度固定, 同时提前更新需要维护的变量 (sum_)if end >= k - 1:sum_ -= nums[start]start += 1# Step 5: 返回答案return max_avg
相关文章:
Python算法——滑动窗口问题
关于滑动窗口的概念,请自行到网上搜索相关资料,了解清楚再看本博客。 一、子组数最大平均数 LeetCode 第643题:https://leetcode.cn/problems/maximum-average-subarray-i/ 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你…...
使用 MATLAB 和 Simulink 对雷达系统进行建模和仿真
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Linux 中的 sysctl 命令及示例
介绍 Linux管理员使用该命令在运行时sysctl读取或修改内核参数。无需重新启动即可实时控制和修改网络、 I/O 操作和内存管理设置的选项对于高可用性系统至关重要。 了解如何使用该sysctl命令及其选项来动态调整系统性能。...
Mybatis批量更新数据及其优化
需求场景:定时任务中,从其他平台同步数据,并更新当前平台数据库,表数据3W,分批更新某个字段,耗时巨大,约30min,尝试性能优化。 批量更新的几种常见方式: 1.foreach 循环…...
包含文心一言在内的首批国产大模型 全面开放
8月31起,国内 11 家通过《生成式人工智能服务管理暂行办法》备案的 AI 大模型产品将陆续上线,面向全社会开放。北京 5 家大模型产品分别是百度的 “文心一言”、抖音的 “云雀”、百川智能的 “百川大模型”、清华系 AI 公司智谱华章旗下的 “智谱清言”…...
Linux运维工程师面试题集锦
Linux运维工程师面试题集锦 一、Linux基础问题1.1 Linux的几个常用命令有哪些?1.2 Linux如何查看当前系统版本?1.3 Linux系统的文件权限有哪些?1.4 Linux如何修改文件权限?1.5 如何在Linux系统中查看文件内容?1.6 Linux的发行版本有哪些?1.7 Linux的文件系统是什么样子的…...
深度学习——感受野以及与图像修复的问题
在CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小被称作感受野(receptive field),指的是神经网络中一个神经元可以感知到的区域,在CNN中,即 上某个元素的计算受输入图像上影响的区域…...
微服务容错 Resilience4j 接口服务-容错原理
微服务容错 Resilience4j 容错原理 4.1 微服务容错简介 在⾼并发访问下,⽐如天猫双11,流量持续不断的涌⼊,服务之间的相互调⽤频率突然增加,引发系统负载过⾼,这时系统所依赖的服务的稳定性对系统的影响⾮常⼤&#…...
OceanBase 4.x改装:另一种全链路追踪的尝试
本文作者:夏克 OceanBase 社区文档贡献者,曾多次参与 OceanBase 技术征文比赛,获得优秀名次。从事金融行业核心系统设计开发工作多年,服务于某交易所子公司,现阶段负责国产数据库调研。 本文为 OceanBase 第七期技术征…...
springCloudAlibaba详解
一、概述 1、简介 Spring Cloud Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了给Java开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。 Spring Cloud Alibaba 致力于 提供微服务开发的一站式解决方案。该项目包含开发分布…...
python通过docker打包执行
背景 正常情况下,python脚本执行需要安装有python环境,那python环境虽然也可以通过移植的方法来安装,那总归是比较麻烦的,下面通过docker打包的方式来执行python脚本 1、安装python镜像 准备两个文件即可,dockerfile、requirements.txt两个文件的内容分别如下 同目录下…...
实现公网远程访问:Windows本地快速搭建SFTP文件服务器并配置端口映射
文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端࿰…...
获取文件路径
String fName " D:\\C#_Source\\test\\uploadFile\\test.xlsx";// 方法一: File tempFile new File( fName.trim());String fileName tempFile.getName();System.out.println("fileName " fileName);// 方法二: String fName …...
如何自己实现一个丝滑的流程图绘制工具(八) 创建节点的文本标签
背景 节点的文本标签不希望是通过节点编辑实现,而是拿到节点名字渲染上去,包括连接线 createLabel(element, name, parent) {const modeling this.bpmnModeler.get(modeling)let labelCenter {}// 连接线上的标签if (element.type bpmn:SequenceFlo…...
Spring Boot多数据源配置运行报错:No operations allowed after connection closed连接异常的解决
上一篇文章我们讲了如何配置多数据源,但是配置在使用一段时间之后,查询数据库会发生报错:No operations allowed after connection closed。 一、问题原因: 经过排查发现是因为MySQL5.0以后针对超长时间DB连接做了一个处理&#…...
3、QT 的基础控件的使用
一、qFileDialog 文件窗体 Header: #include <QFileDialog> qmake: QT widgets Inherits: QDialog静态函数接口: void Widget::on_pushButton_clicked() {//获取单个文件的路径名QString filename QFileDialog :: getOpenFileName(this, tr("Open Fi…...
爬虫逆向实战(二十六)--某某学堂登录
一、数据接口分析 主页地址:某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现pass是加密参数 请求头是否加密? 无响应是否加密? 无co…...
leetcode分类刷题:哈希表(Hash Table)(四、前缀和 处理连续子数组)
1、leetcode题目里对于元素加和的考察可谓是屡见不鲜,包括 简单的限定一个有效答案的两个或多个元素求和leetcode分类刷题:哈希表(Hash Table)(一、简单的两数之和)、在有序数组内对加和等于target的三元组…...
如何处理生产环境中的数据倾斜问题?
分析&回答 1、flink数据倾斜的表现: 任务节点频繁出现反压,增加并行度也不能解决问题 部分节点出现OOM异常,是因为大量的数据集中在某个节点上,导致该节点内存被爆,任务失败重启 2、数据倾斜产生的原因&#x…...
【WSN无线传感器网络恶意节点】使用 MATLAB 进行无线传感器网络部署研究
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
slambook-en学习路线图:从初学者到专家的10个关键步骤
slambook-en学习路线图:从初学者到专家的10个关键步骤 【免费下载链接】slambook-en The English version of 14 lectures on visual SLAM. 项目地址: https://gitcode.com/gh_mirrors/sl/slambook-en 想要掌握视觉SLAM技术但不知从何开始?&#…...
3步拯救损坏视频!UNTRUNC开源工具让你的珍贵回忆重获新生
3步拯救损坏视频!UNTRUNC开源工具让你的珍贵回忆重获新生 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否…...
Cursor Pro破解工具终极指南:三步轻松解锁AI编程助手高级功能
Cursor Pro破解工具终极指南:三步轻松解锁AI编程助手高级功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached y…...
3大功能让Mac永不停歇:自动鼠标移动器的终极指南
3大功能让Mac永不停歇:自动鼠标移动器的终极指南 【免费下载链接】automatic-mouse-mover a minimalistic go library/app to keep your mac active and alive 项目地址: https://gitcode.com/gh_mirrors/au/automatic-mouse-mover 你是否曾在重要视频会议中…...
深入RKMedia:拆解Rockchip RV1126多媒体框架,看它如何封装RGA/MPP/RKNN
深入解析RKMedia:Rockchip RV1126多媒体框架的设计哲学与实现细节 在嵌入式多媒体处理领域,Rockchip的RV1126平台凭借其出色的能效比和丰富的硬件加速单元,成为智能视觉终端设备的首选方案之一。而RKMedia作为连接应用层与底层硬件的关键中间…...
深度解析碧蓝航线自动化脚本:架构设计与智能调度创新
深度解析碧蓝航线自动化脚本:架构设计与智能调度创新 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 在移动游戏…...
避坑指南:全志T113-S3连接EC200A模块,搞定RNDIS驱动与自动拨号的那些坑
全志T113-S3与EC200A模块深度调优:从RNDIS驱动到稳定联网的完整实战 在物联网设备开发中,4G模块的集成往往是项目成败的关键节点之一。全志T113-S3作为一款高性能嵌入式处理器,与移远EC200A 4G模块的组合在工业控制、智能终端等领域应用广泛。…...
N_m3u8DL-RE终极指南:如何高效下载加密流媒体视频
N_m3u8DL-RE终极指南:如何高效下载加密流媒体视频 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 还…...
零基础,能转行做网络安全架构师吗?一份写给“跨界者”的理性指南
零基础,能转行做网络安全架构师吗?一份写给“跨界者”的理性指南 拆解真实岗位需求,规划可达成的12个月学习路径 “我30岁了,学编程转行网络安全还来得及吗?”“非科班出身,能成为网络安全架构师吗&#…...
通过Taotoken用量看板清晰掌握各模型调用成本与消耗趋势
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken用量看板清晰掌握各模型调用成本与消耗趋势 在将大模型能力集成到实际项目时,除了关注功能实现࿰…...
