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

和为 K 的子数组

时间:2024-04-26 17:33:51浏览次数:23  
标签:mapIntInt 前缀 nums int prefixSum 数组

Problem: 560. 和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。

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

示例 1:

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

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

思路

看了提示 使用前缀和配合哈希

Code

func subarraySum(nums []int, k int) int {
	result := 0
	// 看了提示 使用前缀和配合哈希
	// 使用循环计算前缀和
	prefixSum := 0
	mapIntInt := make(map[int]int)
	mapIntInt[0]++
	for _, value := range nums {
		// 当前前缀和减去k即为需要查找的前缀和
		prefixSum += value
		if v, ok := mapIntInt[prefixSum-k]; ok {
			// 找到
			result += v
		}
		// 将当前前缀和存入map
		mapIntInt[prefixSum]++
	}
	return result
}

标签:mapIntInt,前缀,nums,int,prefixSum,数组
From: https://www.cnblogs.com/sunchenxuan/p/18160543

相关文章

  • js数组合并去重
    //数组去重//优化遍历数组法functionuniqueArr(array){varr=[];for(vari=0,l=array.length;i<l;i++){for(varj=i+1;j<l;j++)if(array[i].item_code===array[j].item_code)j=++i;r.push(array[i])......
  • Javascript的数据类型和json数组
    4个数据类型:NumberStringBooleanUndefinedalert(parseInt(k));//如果不是数字会输出NaN,从第一个字符开始输出数字,直到不是数字后返回值。json数组://js中k、v型数据,使用jsonvarperson={name:"张三",//注意里面的元素用,分割。定义的是key是name的value值为张三age......
  • 力扣-442. 数组中重复的数据
    1.题目介绍题目地址(442.数组中重复的数据-力扣(LeetCode))https://leetcode.cn/problems/find-all-duplicates-in-an-array/题目描述给你一个长度为n的整数数组nums,其中nums的所有整数都在范围[1,n]内,且每个整数出现一次或两次。请你找出所有出现两次的整数,......
  • 力扣-448. 找到所有数组中消失的数字
    1.题目题目地址(448.找到所有数组中消失的数字-力扣(LeetCode))https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/题目描述给你一个含n个整数的数组nums,其中nums[i]在区间[1,n]内。请你找出所有在[1,n]范围内但没有出现在nums中的数字,......
  • php几个数组的奇淫巧计
    使用array_map()应用函数到数组的每个元素。$numbers=[1,2,3,4,5];$squares=array_map(function($number){return$number*$number;},$numbers);//$squares=[1,4,9,16,25]使用array_filter()过滤数组中的元素。$numbers=[1,2,3,4,5];$o......
  • C++数组的连续性
    虚拟上连续,物理上大概率连续,除非不在同一个物理页上,并且物理页不连续时数组在物理地址空间是否连续,对于用户空间的程序是不需要关心的。另外,对于一个抽象层次很高的编程语言,数组是不是一定要保证虚拟地址空间连续,感觉也是可以研究的。例如,java的数组就不连续?所以array到底是在......
  • 力扣-697. 数组的度
    1.题目介绍题目地址(697.数组的度-力扣(LeetCode))https://leetcode.cn/problems/degree-of-an-array/题目描述给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与 nums 拥有相同大小的度的最短......
  • 第三章 字符串、向量和数组
    当用+连接string对象和字符串字面值的时候,必须确保有一个操作数是string对象。头文件包含字符处理相关函数使用范围for循环实际上是在使用迭代器循环,所以不能再循环里改变容易容量或执行让迭代器失效的操作。数组的名字在很多情况下会转换成指针,auto会推导出指针,但是decltype还......
  • 力扣-189. 轮转数组
    1.题目题目地址(189.轮转数组-力扣(LeetCode))https://leetcode.cn/problems/rotate-array/题目描述给定一个整数数组nums,将数组中的元素向右轮转k 个位置,其中 k 是非负数。 示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步......
  • 笔记/C++中的数组排序
    在C++中,std::sort函数是一个用于对容器(如数组、向量等)进行排序的通用算法。它定义在<algorithm>头文件中,并接受两个迭代器参数,分别指向要排序的范围的开始和结束位置。此外,std::sort还可以接受一个可选的比较函数或lambda表达式,用于自定义排序规则。以下是std::sort函数的基本用......