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

LeetCode 热题100-10 和为 K 的子数组

和为 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 

子数组是数组中元素的连续非空序列。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

示例 2:

输入:nums = [1,2,3], k = 3
输出:2

提示:

  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -10e7 <= k <= 10e7

这道题目首先想到的是暴力,从左边开始遍历i,然后再用个指针从i+1遍历->len(nums),这样的话应该o(n²), 可惜python通过不了(貌似java可以...

所以只好学点新东西吧。。。前缀和

用hash表来优化一下,hash表存的也是前缀和,但是可以一边计算前缀和一边存hash

找pre_sum-k,如果有则res+=hashmap[pre_sum-k]

class Solution:def subarraySum(self, nums: List[int], k: int) -> int:hashmap = {0:1}tsum = 0 res = 0for i in range(len(nums)):tsum += nums[i]if tsum - k in hashmap:res += hashmap[tsum-k]if tsum in hashmap:hashmap[tsum] += 1else :hashmap[tsum] = 1return res

 


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

相关文章:

  • C++:list篇
  • npm包不满足需求的时候怎么办
  • Android13--移除最近任务长按图标弹出菜单
  • Oracle DG备库应用延迟问题分析处理
  • Java核心API——collection类的常见方法
  • golang并发编程—— 并发模式
  • UI自动化测试的边界怎么定义?
  • 【秋招笔试】8.21华为秋招-三语言题解
  • PbootCMS程序安全设置建议
  • kafka操作
  • 海康二次开发学习笔记5-二次开发小技巧
  • C语言实现经典排序算法
  • Excel十进制度转为度分秒格式
  • 奇安信渗透测试岗位三面经验分享
  • JVM调优原理
  • 不同语言的转义字符
  • 最新高仿拼夕夕源码/拼单系统源码/拼单商城/类目功能齐全
  • 2024年“羊城杯”粤港澳大湾区网络安全大赛 MISC部分
  • 适用于 Visual Studio 的 C++ 万能头
  • SpringBoot集成kafka接收对象消息