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

leetcode-560. 和为 K 的子数组

题目描述

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

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

示例 1:

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

示例 2:

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

思路

前缀和

参考:算法面试实录-和为 k 的子数组_哔哩哔哩_bilibili 这个视频讲的很清楚

1)变量pre用来记录前缀的累加和

2)字典记录:当前位置累加和出现的次数。PS:需初始化{0:1}

3)遍历数组,如果前缀和-k在字典中,count+=字典中的次数

class Solution(object):
    def subarraySum(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        count = 0
        pre = 0
        pre_dict = {0:1}
        for num in nums:
            pre += num
            if pre - k in pre_dict:
                count += pre_dict[pre-k]
            if pre in pre_dict:
                pre_dict[pre] += 1
            else:
                pre_dict[pre] = 1
        return count

if __name__ == '__main__':
    s=Solution()
    nums = [1,2,3]
    k = 3
    print(s.subarraySum(nums, k))

http://www.kler.cn/a/308833.html

相关文章:

  • Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层
  • 算法——长度最小的子数组(leetcode209)
  • 985研一学习日记 - 2024.11.14
  • Bugku CTF_Web——点login咋没反应
  • 微信小程序中使用离线版阿里云矢量图标
  • opencv常用api
  • Qt构建JSON及解析JSON
  • JMeter 中使用 Gson 操作请求中的Boby参数
  • SQL超时的常见原因和解决思路
  • MFC实现对话框与控件的自适应调节
  • 20个Python入门基础语法要点
  • NISP 一级 | 6.2 移动智能终端安全威胁
  • 使用Mockito进行单元测试
  • 春意教育:SpringBoot在线学习平台开发
  • 矢量化操作
  • JS日期转化指定格式,获取月/周日期区间
  • CentOS 中配置 OpenJDK以及多版本管理
  • Unix-like系统是什么
  • 408算法题leetcode--第五天
  • frp内网穿透功能使用教程
  • 玩机搞机-----如何简单的使用ADB指令来卸载和冻结系统应用 无需root权限 详细操作图示教程
  • Spring Boot-热部署问题
  • SpringBoot启动成功,但端口启动失败
  • 架构师备考的一些思考(四)
  • 集群聊天服务器项目【C++】(六)MySql数据库
  • 【观察】戴尔AI算力加速服务器“焕新上市”,打通AI落地行业“最后一公里”...