首页 > 其他分享 >560. 和为 K 的子数组

560. 和为 K 的子数组

时间:2023-12-20 20:25:21浏览次数:33  
标签:preSums count nums 560 int 数组 presum

给你一个整数数组 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
  • -107 <= k <= 107
    class Solution(object):     def subarraySum(self, nums, k):         """         :type nums: List[int]         :type k: int         :rtype: int         """         count = 0         n = len(nums)
        preSums = collections.defaultdict(int)         preSums[0] = 1
        presum = 0         for i in range(n):             presum += nums[i]
            count += preSums[presum - k]
            preSums[presum] += 1         return count

标签:preSums,count,nums,560,int,数组,presum
From: https://www.cnblogs.com/mrmrwjk/p/17917400.html

相关文章

  • C题目分析:PTA二维数组中每行最大值和每行和
    *首先记住以下:算法框架从内到外。明确改变的条件。明确如何改变。明确导向结果。一。分析流程:输入——组成数组——输出数组和最大值二。细化:S1输入的格式:一行输入,中间空格,最后一格无空格。S2组成数组:运用二维数组,其中前四个数中间有三个空格,且第一个数前有三个空格,第四和五个数中......
  • js 数组的42种方法
    本文列举了数组的42个方法欢迎关注前端早茶,与广东靓仔携手共同进阶~前端早茶专注前端,一起结伴同行,紧跟业界发展步伐~公众号一、前言数组在js中作为一个非常重要的类型之一,在我们对数据处理,存储数据,条件渲染的时候经常会用到,所以随着ES的不断更新,数组的方法也......
  • 2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。 两个子数
    2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少?如果没有有效方法,返回-1。正式:2<=n<=10^60<=arr[i]<=100001<=T<=10^8扩展:2<=n<=10^6-10000<=arr[i]<=1......
  • 2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。 两个子数
    2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少?如果没有有效方法,返回-1。正式:2<=n<=10^60<=arr[i]<=100001<=T<=10^8扩展:2<=n<=10^6-10000<=a......
  • c语言 数组与指针
    @TOC前言之前我们讲了指针数组,今天讲一下数组指针。一、数组与指针的概述:数组指针就是数组的指针,就是指向数组的指针。inta[5]={1,2,3,4,5};//定义一个数组int*p=&a[0];//定义一个指针指向数组的首地址,由于数组的首地址就是数组名,所以&a[0]==a;则可写为int*......
  • [LeetCode] LeetCode81. 搜索旋转排序数组II
    题目描述思路:是lc33.搜索旋转排序数组的延伸,允许包含重复元素起初:当nums[left]<=nums[mid]时,区间[left,mid]有序当nums[left]>nums[mid]时,区间[mid,right]有序但是这个题目当nums[left]==nums[mid]时,无法判断哪个区间是有序的,无法判断target位于左侧还是右侧,此时无......
  • [LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值
    题目描述思路如果数组翻转后又回到升序的情况,即nums[left]<=nums[right],则nums[left]就是最小值,直接返回。如果数组翻转,需要找到数组中第二部分的第一个元素:若nums[left]<=nums[mid],说明区间[left,mid]连续递增,则最小元素一定不在这个区间里,可以直接排除,最小值在[......
  • 912. 排序数组---快速排序
    1.题目介绍给你一个整数数组 \(nums\),请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:\(1<=nums.length<=5*10^{4}\)\(-5*10^{4}<=nums[i]<=5*10^{4}\)2.题解2.1随机化快速排......
  • 深度解析ArrayList:灵活高效的动态数组实现
    在Java集合框架中,ArrayList是一个常用而强大的类,它提供了动态数组的实现,允许在运行时动态调整数组的大小。ArrayList是List接口的实现类,基于动态数组的数据结构。它可以存储任意类型的对象,并提供了丰富的方法,包括添加、删除、遍历等,使其在各种场景下都能发挥重要作用。底层......
  • js 处理对象数组 + map 筛选出指定字段数据 + filter过滤重复数据/指定数据
    constres=[{id:1,name:'zhangsan',age:16,gender:0},{id:1,name:'zhangsan',age:16,gender:0},{id:2,name:'lisi',age:20,gender:1}];获取res中的id和name/*[{"id&......