560. 和为 K 的子数组

思路

  本题的主要思路为创建一个哈希表记录每个0~i的和 ,在遍历这个数组的时候查询有没有sum-k的值在哈希表中,如果有,说明有个位置到当前位置的和为k。

  有可能不止一个,哈希表负责记录有几个sum-k,将和记录下来。这里把每个以i结尾的结果都算上了,所以不用担心不全等问题。

  这里需要注意的两个点为:

  1. m0=1;提前在哈希表注册一个0的结果,因为如果刚好是0到当前i的话,需要有一个记录被算上。
  2. msum++这行代码放的位置,有个简单的方法来判断会不会影响当前i计算的结果,那就是加到当前的和为0,k也为0,如果你放在前面的话就会算上这个结果,但是当前i到当前i是没有元素的,不算一种结果,但是你加上了这个结果,是错误的,有影响的。

代码示例

go 复制代码
func subarraySum(nums []int, k int) int {
    result:=0
    m:=make(map[int]int)
    m[0]=1
    sum:=0
    for i:=0;i<len(nums);i++{
        sum+=nums[i]
        if val,ok:=m[sum-k];ok{
            result+=val
        }
        m[sum]++
    }

    return result
}
相关推荐
To_OC11 小时前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
刘马想放假1 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
05Kevin1 天前
lk每日冒险题--数据结构6.27
算法
To_OC1 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安2 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者2 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
北域码匠2 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法