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

LeetCode(python)——560.和为k的子数组

题目

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

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

示例 1:

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

示例 2:

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

思路

(1)前缀和——pre[i]定义为数组前i个元素的和

如果已知每个下标的前缀和,那么[i....j-1]这个子数组的和为k,则意味着pre[j] - pre[i] == k,左右变换一下可以得到:pre[i] = pre[j] - k

非常好,那么我们就可以在遍历数组计算每个下标前缀和的时候,计算target = pre[j] - k,如果已经记录的前缀和pre[i] == target,就说明对于pre[j]而言,找到了一个子数组[i....j-1]

(2)哈希表

在找前缀和pre[i]时,可以不用数组存,那么也就可以不用再遍历一遍前缀和了

用哈希表存,key = pre[i],value = pre[i]出现的次数

A tip:

数组有序——滑动窗口

数组无序——前缀和

代码

class Solution:def subarraySum(self, nums: List[int], k: int) -> int:ans = 0pre = 0mp = {0: 1}   # 初始化pre[0],以备出现从头开始的子数组计算eg:pre[i]==k,那么pre[i]-k=0,要找的前缀和就是0for num in nums:pre += num   # 计算前缀和target = pre - k   # 计算满足条件的前缀和ans = ans + mp.get(target, 0)   # 记录答案mp[pre] = mp.get(pre, 0) + 1   # 记录当前的前缀和return ans

http://www.dtcms.com/a/598447.html

相关文章:

  • cae毕业设计代做网站淮北论坛招聘最新消息兼职
  • 今天我们学习zabbix网络设备监控的配置
  • NRBO-XGBoost+SHAP分析+新数据预测!机器学习可解释分析不在发愁!提供9种混沌映射方法(tent、chebyshev、singer等)
  • 两学一做教育网站家政服务app软件开发
  • 网站建设必学课程企业文化包括哪些内容
  • Poco: 一个功能丰富、易于使用的跨平台C++开发框架(FTP上传下载、断点续传等)
  • 网站建设学什么专业网络营销的发展前景
  • 做公众号首图网站wordpress禁止访问模版页面
  • 如何更新Dev-C++到最新版本?
  • 传统文化信息|文化管理|基于java的传统文化信息管理系统设计与实现(源码+数据库+文档)
  • 【题解】[GESP样题 七级] 迷宫统计
  • 丰台广州网站建设tomcat 建网站
  • 基于 GEE 利用 WorldPop 数据集批量导出 100 米分辨率人口影像数据与时序分析
  • 《实施意见》推动新场景应用:乡村政务场景如何借AI破局
  • 哪有专做飞织鞋面的网站做网站内容需要自己填的
  • 文山州住房和城乡建设局网站建筑工程网格化
  • 用Canvas画出你的第一个网页小游戏
  • ProfiNet转ModbusTCP工业级数据采集网关保障增压站无人值守
  • 网站最上面标题怎么改成都市四方建设工程监理有限公司网站
  • 重庆本地网站有哪些公司邮箱怎么查询
  • xtuoj 素数
  • 静态路由综合实验【实验报告】
  • 电影网站这么做关键词电子产品展示网站
  • 新加坡网站建设公司涡阳在北京做网站的名人
  • JavaScript面试手写题(持续更新)
  • 网站首页的head标签内wordpress标题太长
  • SpringMVC整理
  • 网站会员发展计划ip安装wordpress
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 5
  • 网站创建软件画质优化app下载