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

LeetCode每日一题4.27

3392. 统计符合条件长度为 3 的子数组数目

问题

在这里插入图片描述

问题分析

统计符合条件的长度为 3 的子数组数目。具体条件是:子数组的第一个数和第三个数的和恰好为第二个数的一半。

思路

遍历数组:由于子数组长度固定为 3,我们可以通过遍历数组来检查每个长度为 3 的子数组是否满足条件。
检查条件:对于每个子数组 [nums[i], nums[i+1], nums[i+2]],检查是否满足 nums[i] + nums[i+2] == nums[i+1] / 2。
计数:如果满足条件,则计数器加 1。

代码

def count_good_subarrays(nums):count = 0n = len(nums)# 遍历数组,检查每个长度为 3 的子数组for i in range(n - 2):# 检查条件:第一个数和第三个数的和恰好为第二个数的一半if nums[i] + nums[i + 2] == nums[i + 1] / 2:count += 1return count

复杂度分析

时间复杂度:算法的时间复杂度为 (O(n)),其中 (n) 是数组 nums 的长度。这是因为在最坏情况下,算法需要遍历数组一次,并对每个长度为 3 的子数组进行常数时间的检查。
空间复杂度:算法的空间复杂度为 (O(1)),因为只使用了常数级的额外空间。

学习

定义 countSubarrays 方法:
def countSubarrays(self, nums: List[int]) -> int::定义一个方法 countSubarrays,接受一个整数列表 nums 作为参数,并返回一个整数。
ans = 0:初始化计数器 ans 为 0,用于记录满足条件的子数组数量。
n = len(nums):获取数组 nums 的长度。
遍历数组:
for i in range(n - 2)::遍历数组,确保每次检查的子数组长度为 3。
条件检查:
if nums[i] + nums[i + 2] == nums[i + 1] / 2::检查当前子数组是否满足题目要求,即第一个数和第三个数的和恰好为第二个数的一半。
计数:
ans += 1:如果满足条件,计数器 ans 加 1。
返回结果:
return ans:方法最后返回计数器 ans 的值。

相关文章:

  • 【dockerredis】用docker容器运行单机redis
  • C#中属性和字段的区别
  • pytorch搭建并训练神经网络
  • Golang 遇见 Kubernetes:云原生开发的完美结合
  • MPI Code for Ghost Data Exchange in 3D Domain Decomposition with Multi-GPUs
  • 20250427 对话1: 何东山的宇宙起源理论
  • vscode eslint与vue-official冲突,导致点击的时候鼠标不会变成手型,一直在加载,但是不转到相应方法。
  • vue2 项目的 vscode 插件整理
  • Marmoset Toolbag 5.0 中文汉化版 八猴软件中文汉化版 免费下载
  • Maven 依赖范围(Scope)详解
  • 写windows服务日志-.net4.5.2-定时修改数据库中某些参数
  • 批量级负载均衡(Batch-Wise Load Balance)和顺序级负载均衡(Sequence-Wise Load Balance)
  • 【如何使用solidwork编辑结构导入到simscope】
  • FastAPI中的依赖注入详解与示例
  • MLLM之Bench:LEGO-Puzzles的简介、安装和使用方法、案例应用之详细攻略
  • 语音合成之八-情感化语音合成的演进路线
  • HTTP header Cookie 和 Set-Cookie
  • DIFY教程第一集:安装Dify配置环境
  • 泰迪杯实战案例超深度解析:旅游景点游客流量预测与资源优化
  • 英文中日期读法
  • 五一期间上海景观照明开启重大活动模式,外滩不展演光影秀
  • 我国首个核电工业操作系统发布,将在华龙一号新机组全面应用
  • 报告:到2030年我国无人机产业将率先实现万亿规模
  • 商务部:将积极会同相关部门加快推进离境退税政策的落实落地
  • 当智驾成标配,车企暗战升级|2025上海车展
  • 摩根士丹利基金雷志勇:AI带来的产业演进仍在继续,看好三大景气领域