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

和等于 k 的最长子数组长度(LeetCode)

题目

        给定一个数组 nums 和一个目标值 k,找到和等于 k 的最长连续子数组长度。如果不存在任意一个符合要求的子数组,则返回 0

解题

"""
时间复杂度: O(n),因为我们只遍历一次数组。
空间复杂度: O(n),用于存储前缀和及其对应的位置。
"""def maxSubArrayLen(nums, k):prefix_sums = {0: -1}  # 初始化哈希表,前缀和为 0 时索引为 -1current_sum = 0max_length = 0for i, num in enumerate(nums):current_sum += num# 检查是否存在前缀和,使得 current_sum - previous_sum = kif current_sum - k in prefix_sums:max_length = max(max_length, i - prefix_sums[current_sum - k])# 仅在哈希表中记录前缀和首次出现的位置if current_sum not in prefix_sums:prefix_sums[current_sum] = ireturn max_length# 示例 1
nums = [1, -1, 5, -2, 3]
k = 3
print(maxSubArrayLen(nums, k))  # 输出: 4# 示例 2
nums = [-2, -1, 2, 1]
k = 1
print(maxSubArrayLen(nums, k))  # 输出: 2

http://www.mrgr.cn/news/771.html

相关文章:

  • SpringMVC
  • 二、开发环境和第一个OpenTK程序
  • Mininet应用实践
  • RedisTempate序列化的json字符串,如何反序列化
  • 【SpringBoot】SpringBoot中的异常处理和异常跳转页面
  • 【Python爬虫】技术深度探索与实践
  • C#学习总结
  • SQL基础——MySQL的索引
  • 这是啥设计模式-组合模式
  • Mysql-约束
  • Unity的UI设计
  • 使用旧笔记本电脑搭建私人NAS
  • JVM -垃圾回收器
  • vue 后台管理 指定项目别名
  • [LitCTF 2024]浏览器也能套娃?
  • CentOS7安装Docker教程(含最新镜像地址)
  • 国内无法更新linux,无法使用sudo yum update
  • 实现弹弹球小游戏
  • Vue中<style scoped>与<style module>的深入解析与应用
  • LeetCode.22。括号生成