当前位置: 首页 > 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 的值。

http://www.xdnf.cn/news/178579.html

相关文章:

  • 【HPC存储性能测试】01-OpenMPI部署
  • 深入理解指针(5)
  • 【Leetcode 每日一题】3392. 统计符合条件长度为 3 的子数组数目
  • lobechat调用ollama模型,服务连接失败
  • UE5 NDisplay 单主机打包运行
  • SaaS方兴未艾,快速稳定的访问与全面的安全防护成关键
  • 典籍查询界面增加我的收藏查询功能
  • AI 数据中心 vs 传统数据中心:从硬件架构到网络设计的全面进化
  • 0基础 | Proteus | 中断 | 点阵
  • keil 中优化等级的bug
  • 泰迪杯实战案例超深度解析:旅游景点游客流量预测与资源优化
  • Zabbix
  • 测试基础笔记第十四天
  • Java基础——排序算法
  • 底层源码和具体测试解析HotSpot JVM的notify唤醒有序性(5000字详解)
  • 优化无头浏览器流量:使用Puppeteer进行高效数据抓取的成本降低策略
  • PHP实现 Apple ID 登录的服务端验证指南
  • 现代Python打包工具链
  • Redis的阻塞
  • AI赋能智能对讲机:技术融合与行业变革的深度实践
  • 【计算机网络性能优化】从基础理论到实战调优
  • 97A6-ASEMI无人机专用功率器件97A6
  • (25)VTK C++开发示例 --- 将点坐标写入.xyz文件
  • Java基础 — 数组
  • Spark-Streaming(四)
  • 天梯——现代战争
  • NTFS和EXFAT哪个好:深入解析这两种文件系统的优劣
  • FAQ运用
  • 在使用docker创建容器运行报错no main manifest attribute, in app.jar
  • springboot logback 默认加载配置文件顺序