力扣560. 和为 K 的子数组中,哈希表mp为什么要mp[0] = 1 ?
hello大家好今天给大家带来的是最近做的一道题题目如下一、题目二、答案下面是我的答案刚开始用的暴力循环结果超时了... 后面又想到了前缀和我把前缀和用vector村了起来但是死活没想到用哈希表结果还是超时但是我已经把核心公式推出来了只能说是太可惜了下面蓝色的就是核心公式过程比较潦草哈hash.find(sum - k) ! hash.end()下面是我的答案三、为什么要hash[0] 1实话说这个问题确实困扰了我好久但是其实很简单因为unordered_mapint, int hash本质上保存的就是前缀和出现的次数那么就可以恍然大悟了hash[0] 1不就是前缀和为0的次数吗有的小伙伴是不是还有点点懵呢嘿嘿本身初始化了这个容器后前缀和就应该是0因为容器初始状态前缀和只能是0举个例子如果说hash[1] 1 那么意思就是 前缀和为1的元素出现过一次那么hash[0] 1不就说明了初始状态嘛前缀和没有添加元素所以肯定是为0出现过一次