public class Solution {
public int SubarraySum(int[] nums, int k) {
int sum = , result = ;
Dictionary<int, int> preSum = new Dictionary<int, int>();
preSum.Add(, ); for (int i = ; i < nums.Length; i++)
{
sum += nums[i];
if (preSum.ContainsKey(sum - k))
{
result += preSum[sum - k];
}
if (preSum.ContainsKey(sum))
{
preSum[sum]++;
}
else
{
preSum.Add(sum, );
}
} return result;
}
}

https://leetcode.com/problems/subarray-sum-equals-k/#/solutions

补充一个python的实现,和上面的思路一样:

 class Solution:
def subarraySum(self, nums: 'List[int]', k: int) -> int:
sums = 0
count = 0
dic = dict()
for n in nums:
if sums in dic.keys():
dic[sums] += 1
else:
dic[sums] = 1
sums += n
dif = sums - k
if dif in dic.keys():
count += dic[dif]
return count

下面进行解释,字典dic中存储的是某一个连续和的出现频率。例如nums=[1,1,1],k=2。

第一次循环时,sums等于第零项的值0,则有{0:1},表示连续和为0的情况出现了1次。

第二次循环时,sums等于第一项的值1,则有{0:1,1:1},表示连续和为1出现了1次。

第三次循环时,sums等于前两项的值2,则有{0:1,1:1,2:1},表示连续和为2出现了1次。

第四次循环时,sums等于前三项的值3,则有{0:1,1:1,2:1,3:1},表示连续和为3出现了1次。

每一次循环的过程中都判断sums-k是否在字典dic中出现过,

如果出现过,则表示到当前位置的前x项中,包含有连续和为k的子集。

这一点是数学的技巧,也是提高效率的关键。

leetcode560的更多相关文章

  1. leetcode560题解【前缀和+哈希】

    leetcode560.和为K的子数组 题目链接 算法 前缀和+哈希 时间复杂度O(n). 在解决这道题前需要先清楚,一个和为k的子数组即为一对前缀和的差值. 1.我们假设有这么一个子数组[i,j]满 ...

  2. [Swift]LeetCode560. 和为K的子数组 | Subarray Sum Equals K

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  3. LeetCode560. Subarray Sum Equals K

    Description Given an array of integers and an integer k, you need to find the total number of contin ...

随机推荐

  1. centos7.5 安装mysql8.0.13

    在Linux系统上使用rpm包管理器安装mysql Installing MySQL on Linux Using RPM Packages 环境:CentOS Linux release 7.4.1 ...

  2. DAX创建带有过滤器的超链接

    在这篇文章中,我们将创建一个DAX公式,根据报表中的过滤器生成超链接. 该度量包含2个部分,第一部分是使用DAX生成目标报告的正确URL,第二部分是将过滤器传递给该报告. 浏览器支持的MAX网址长度定 ...

  3. [LeetCode&Python] Problem 720. Longest Word in Dictionary

    Given a list of strings words representing an English Dictionary, find the longest word in words tha ...

  4. 我的代码-models

    # coding: utf-8 # In[1]: import pandas as pdimport numpy as npfrom sklearn import treefrom sklearn.s ...

  5. 1.golang的环境搭建及入门

    安装包下载 下载链接:https://dl.google.com/go/go1.12.3.windows-amd64.msi 环境搭建 安装完成之后,找一个来存放go语言文件的文件夹,我这里选的是G: ...

  6. Go Example--自定义排序

    package main import ( "fmt" "sort" ) //定义类型别名 type ByLength []string func (s ByL ...

  7. BEAM188简单应用

    目录 BEAM188简介 APDL应用实例 显示梁三维图 BEAM188简介 BEAM188-3D线性有限应变梁 Beam188 单元适合于分析从细长到中等粗短的梁结构,该单元基于铁木辛哥梁结构理论, ...

  8. 在linux中编译grpc

    环境: centos_7_x86_x64 一.下载 1)下载grpc源代码:grpc-1.2.0.zip 2)下载grpc依赖库: 1)benchmark-master.zip 2)boringssl ...

  9. H3C交换机限制子网之间的相互访问

    acl number 3000     rule 1 permit ip source 10.0.5.0 0.0.0.255 destination 172.16.1.100 0   #允许10.0. ...

  10. oracle命令1

    基础查询  查询当前用户 show user; 查询当前用户下的表 select * from tab; 清屏 host cls: clear; --查询所有的员工信息 select * from e ...