刷爆力扣之子数组最大平均数 I

news2024/11/23 12:03:17

刷爆力扣之子数组最大平均数 I

HELLO,各位看官大大好,我是阿呆 🙈🙈🙈

今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TQW1OPxW-1670317385466)(刷爆力扣之子数组最大平均数 I.assets/src=http___5b0988e595225.cdn.sohucs.com_images_20191118_c282491ce09c40b7956095e844f8a115.gif&refer=http___5b0988e595225.cdn.sohucs.gif)]

该专栏按照不同类别标签进行刷题,每个标签又分为 Easy、Medium、Hard 三个等级 👊👊👊

本部分所有题目均来自于LeetCode 网,并于每道题目下标明具体力扣网原题链接 🏃🏃🏃

OK,兄弟们,废话不多直接上题,冲冲冲 🌞🌞🌞


一 🏠 题目描述

643. 子数组最大平均数 I

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k

请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。

任何误差小于 10-5 的答案都将被视为正确答案。

示例 1:

输入:nums = [1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

示例 2:

输入:nums = [5], k = 1
输出:5.00000

提示:

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

二 🏠破题思路

2.1 🚀 关键信息

解决问题第一步,当然先提取题目字面上的关键信息 😎😎😎

题干很容易理解,就是找平均数最大且长度为 k 的连续子数组 🌹🌹🌹


提取完题目中的关键信息后,直接进入第二阶段,思路整理 😃😃😃


2.2 🚀 思路整理

滑动窗口法

典型的滑动窗口题,长度为 k 的滑动窗口,当窗口右移时,把右边新位置加到窗口和中,把左边被移除位置从窗口和减掉。求出最大的和,最终除以 k 得到最大平均数 🌺🌺🌺


整理完解题思路后,直接进入第三阶段,代码实现 😃😃😃


三 🏠 代码详解

3.1 🚀 代码实现

按照我们刚才的破题思路,直接代码走起来 👇👇👇👇

double findMaxAverage(std::vector<int>& nums, int k) {
    int sum = 0, res = INT_MIN; //定义返回值和连续子序列的累加之和
    int len = nums.size(); //获取数组长度
    
    for (size_t i = 0; i <= len - k; ++i) { //遍历数组 [0 ,len - k + 1) 
        if (i != 0) { //当为第一个数值时
            sum = sum + nums[i + k - 1] - nums[i - 1]; // 将[i, i + k - 1] 之间序列求和
        } else { //当不为第一个数值时
            sum = accumulate(nums.begin(), nums.begin() + k, 0); //遍历计算 [0, k - 1] 之间序列求和
        }

        res = max(sum, res); //修改返回值
    }

    return res * 1.0 / k; //返回结果
}

3.2 🚀 细节解析

看完 👀👀👀 全注释版的代码实现后,相信看官大大对整体逻辑已经是大写的 OK 了 😃😃😃

那么我们挖掘上述实现的晦涩细节 😖😖😖 进行解析,直接开干,走起来 👇👇👇👇

sum = sum + nums[i + k - 1] - nums[i - 1]; // 将[i, i + k - 1] 之间序列求和

对应任意位置 i ,其满足滑动窗口大小为 k 的数组索引为 i + k - 1 。不理解可以把 i = 0 代入,即范围变为 [ 0 , k - 1 ] 该区间长度为 k 🐌🐌🐌


i <= len - k //遍历数组 [0 , len - k + 1)

因为最后一次滑动窗口移动之后的索引为 [ len - k , len - 1 ]

len - 1 易理解,数组遍历时循环结束条件,len - k 可将 i = len - 1 代入上述 i + k - 1,即可得出循环结束的条件 🐳🐳🐳


四 🏠 心路历程

为方便各位看官大大了解博主真实刷题过程,我把当时状态纯纯真实还原,记录在心路历程这一小节,不感兴趣的小伙伴可以直接跳过哈

博主在第一阶段提取 🚀 关键信息没有问题,在第二阶段 🚀 思路整理没有问题(上述实现和题解博主原创)


五 🏠 结语

身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍

如果各位看官大大觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力

博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪

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

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

相关文章

Centos 8.2 本地部署 Jenkins

文章目录1. 简介2. 准备条件3. 安装依赖工具4. 配置 jenkins 源5. 安装 java 176. 安装 Jenkins7. 登陆8. 安装插件8.1 kubernets 插件8.2 git 插件8.3 docker 插件9. 创建 pipeline job9.1 加载本地 Jenkinsfile 构建9.2 git 构建10. 问题1. 简介 Jenkins 是一个 CI/CD 工具。…

Transformer是如何进军点云学习领域的?

点击进入—>3D视觉工坊学习交流群0.笔者个人体会&#xff1a;这个工作来自于牛津大学、香港大学、香港中文大学和Intel Labs&#xff0c;发表于ICCV2021。我们知道&#xff0c;Transformer在近两年来于各个领域内大放异彩。其最开始是自然语言处理领域的一个强有力的工具。后…

Unity 动画系统(Animation,Animator,Timeline)

文章目录1. Animation1.1 创建Animation1.2 Animation 属性2. Animator2.1 Animator 组件2.2 Animation 状态2.3 状态控制参数2.4 代码中控制状态3. 代码控制动画的播放/暂停/继续播放1. Animation 1.1 创建Animation 选中需要添加动画的物体&#xff0c;打开Animation面板 …

乡村科技杂志乡村科技杂志社乡村科技编辑部2022年第20期目录

三农资讯 科技特派员助力柘城县大豆玉米带状复合种植见成效 宋先锋;贾志远; 1《乡村科技》投稿&#xff1a;cnqikantg126.com 河南省科技特派员赴遂平县指导多花黑麦草防治 蒋洪杰;欧阳曦; 2 河南省肉牛产业科技特派员服务团到光山县开展技术培训服务 翟媛媛;朱燚波…

la3_系统调用(上)

1. 实验内容 理解操作系统接口&#xff1b;系统调用的实现&#xff1a; 应用程序 调用库函数 &#xff08;API&#xff09;API 将 系统调用号 放入 EAX 中&#xff0c; 然后通过中断调用 使系统进入内核态&#xff1b;内核中的中断处理函数 根据系统调用号&#xff0c; 调用对…

通过postgres_fdw实现跨库访问

瀚高数据库 目录 文档用途 详细信息 介绍Postgresql跨库访问中postgres_fdw的使用方法 详细信息 PostgreSQL 外部数据包装器&#xff0c;即 PostgreSQL Foreign Data Wrappers&#xff0c;是现实数据库使用场景中一个非常实用的功能&#xff0c;PostgreSQL 的 FDW 类似于 Ora…

2022年12月编程语言排行榜,数据来了!

2022年迎来了最后一个月&#xff0c;我们可以看到&#xff0c;在这一年中编程语言起起伏伏&#xff0c;有的语言始终炙手可热&#xff0c;而有的语言却逐渐“没落”… 日前&#xff0c;全球知名TIOBE编程语言社区发布了12月编程语言排行榜&#xff0c;有哪些新变化&#xff1f…

木聚糖-聚乙二醇-透明质酸,Hyaluronicacid-PEG-Xylan,透明质酸-PEG-木聚糖

木聚糖-聚乙二醇-透明质酸,Hyaluronicacid-PEG-Xylan,透明质酸-PEG-木聚糖 中文名称&#xff1a;木聚糖-透明质酸 英文名称&#xff1a;Xylan-Hyaluronicacid 别称&#xff1a;透明质酸修饰木聚糖&#xff0c;HA-木聚糖 存储条件&#xff1a;-20C&#xff0c;避光&#xff…

农产品商城毕业设计,农产品销售系统毕业设计,农产品电商毕业设计论文方案需求分析作品参考

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的多用户商城系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;用户通过登录网站&#xff0c;查询商品&#xff0c;购买商品&#xff0c;下单&am…

奋勇拼搏绿茵场,永不言败足球魂——2022卡塔尔世界杯纪念

“我从来都不惧怕压力,老实说,我享受这种压力。”——C罗 第一部分&#xff1a;&#x1f1f6;&#x1f1e6;卡塔尔世界杯 2022年卡塔尔世界杯&#xff08;英语&#xff1a;FIFA World Cup Qatar 2022&#xff09;是第二十二届世界杯足球赛&#xff0c;是历史上首次在卡塔尔和中…

Apple官方优化Stable Diffusion绘画教程

Apple官方优化Stable Diffusion绘画教程 苹果为M1芯片优化Stable Diffusion模型&#xff0c;其中Mac Studio (M1 Ultra, 64-core GPU)生成512*512的图像时间为9秒。想要1秒出图&#xff0c;可以在线体验3090显卡AI绘画。 AI绘图在线体验 二次元绘图 在线体验地址:Stable Di…

AI模型神预测谁是卡塔尔世界杯冠军

推荐教程&#xff1a;AI模型神预测谁是冠军 2022年卡塔尔世界杯 猜猜他们是谁&#xff1f; 谁是最后的冠军&#xff1f; 2022年FIFA世界杯已经拉开帷幕&#xff0c;全世界的球迷都热切地想要知道&#xff1a;谁将获得那梦寐以求的 大力神杯&#xff1f; 2018年俄罗斯世界杯 方…

1,2-二苯基-1,2-二(4-羧基苯)乙烯 ;CAS: 1609575-40-7

英文名称&#xff1a; 4,4-(1,2-Diphenylethene-1,2-diyl)dibenzoic acid 中文名称&#xff1a; 1,2-二苯基-1,2-二(4-羧基苯)乙烯 MF&#xff1a; C28H20O4 MW&#xff1a; 420.46 CAS&#xff1a; 1609575-40-7 AIE聚集诱导发光材料的特点&#xff1a; 1.在固态下有强…

学编程:Python入门考级必备[11]

目录 1.查找字符串 2.字符串的格式化 3.字符串的转义字符 \ \" 4. 修改字符串 5.字符串连接与分割 附件代码&#xff1a; 炼 知识模块(11) 名符其实--字符串 1.查找字符串 # 1.1用 in 函数 a aa in acacacacaabaac print(a) # 1.2 用index 找不到就报错 b h…

ArcGIS_地质多样性评价方法

详细内容请自行查看参考文献 [1] Forte J P , Brilha J , Pereira D I , et al. Kernel Density Applied to the Quantitative Assessment of Geodiversity[J]. Geoheritage, 2018, 10:205-217. https://doi.org/10.1007/s12371-018-0282-3 本文只介绍如何在ArcGIS中实现该…

PostGIS数据测试-一百万点要素

PostGIS数据测试-一百万点要素 小小测试一下&#xff0c;看看单表百万数据的情况 服务器配置 系统版本&#xff1a;Centos7.9.2009CPU&#xff1a;两颗Intel Xeon Gold 6226R CPU 2.90GHz处理器&#xff0c;共32核心内存&#xff1a;DDR4 256G硬盘&#xff1a;Raid5 共24T数…

树选择排序(Tree Selection Sorting)介绍

简介 或许你有一个疑问&#xff1a;为什么堆排序使用二叉树&#xff0c;但是叫堆排序&#xff0c;而不是树排序&#xff1f; 因为堆排序的前身正是叫做树选择排序&#xff08;Tree Selection Sorting&#xff09;&#xff0c;使用树结构&#xff0c;但是要稍微简单一些。 高德…

CNN卷积参数量计算

参考&#xff1a;轻量级网络-Mobilenet系列(v1,v2,v3) - 知乎 盘点下每种类型的层计算可学习参数的数量 Input layer&#xff1a;输入层所做的只是读取输入图像&#xff0c;因此这里没有可以学习的参数。 Convolutional layers&#xff1a;一个卷积层&#xff0c;其输入为l个特…

cassandra安装及配置

Cassandra介绍 Cassandra是一个开源的、分布式、无中心节点、弹性可扩展、高可用、容错、一致性协调、面向列的NoSQL数据库。 Cassandra的主要组成部分主要有: • 节点(Node):Cassandra节点是存储数据的地方。 • 数据中心(Data center):数据中心是相关节点的集合。 • 集群…

Vue3 企业级优雅实战 - 组件库框架 - 8 搭建组件库 cli

前面的文章分享了组件库的开发、example、组件库文档&#xff0c;本文分享组件库 cli 开发。 1 为什么要开发组件库 cli 回顾一个新组件的完整开发步骤&#xff1a; 1 在 packages 目录下创建组件目录 xxx&#xff1a; 1.1 使用 pnpm 初始化 package.json&#xff0c;修改 n…