当前位置: 首页 > news >正文

垂直门户网站建设百度旗下产品

垂直门户网站建设,百度旗下产品,永嘉做网站,徐州手机网站制作公司LeetCode 560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], k 3 …

LeetCode 560. 和为 K 的子数组

  

给你一个整数数组 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

思路

  • 双层循环暴力求解
  • 前缀和,利用空间换时间的思想,参考 LeetCode 大佬题解


    思路类似于【LeetCode 1. 两数之和】。遍历 nums 数组,求每一项的前缀和,并统计对应nums[i]的出现次数,以键值对存入 map。

    边存边检查 map,如果 map 中存在 key 为「当前前缀和 - k」,说明这个之前出现的前缀和,满足「当前i所对应的前缀和 - 之前出现的前缀和 == k」。最后,将「当前前缀和 - k」出现的次数,累加到结果中即可。

    通俗的说,已知当前 i 所对应的前缀和为 prefixSum[i],我们想找出 prefixSum[i] 减去之前的某些连续子数组和之后的差值等于k的这么一些连续子数组,那么满足条件:当前 i 所对应的前缀和 prefixSum[i] - 之前出现的前缀和 x = k,那么这个 x = prefixSum[i] - k,接下来我们要判断这个 x 在之前是否出现过,因此将求得的每一项前缀和,以及对应的出现次数,以键值对形式存入 map中,以便后续判断。

注意:nums中可能存在负数,sum累加和可能更大也可能更小,因此,即使累加和等于k,也不能提前break退出

时间复杂度

  • 双层循环暴力求解:O(n^2)
  • 利用前缀和:O(n)

空间复杂度

  • 双层循环暴力求解:O(1)
  • 利用前缀和:O(n)
// 方法1 双层循环暴力求解
func subarraySum(nums []int, k int) int {res := 0for i := 0; i < len(nums); i++ {sum := 0for j := i; j < len(nums); j++ {sum += nums[j]if sum == k {res++// break // nums中可能存在负数,sum累加和可能更大也可能更小,不能提前break退出}}}return res
}// 方法2 前缀和(推荐)
// 参考:https://leetcode.cn/problems/subarray-sum-equals-k/solution/dai-ni-da-tong-qian-zhui-he-cong-zui-ben-fang-fa-y/
// 思路:类似于【1、两数之和】,遍历 nums 数组,求每一项的前缀和,统计对应的出现次数,以键值对存入 map。
// 边存边检查 map,如果 map 中存在 key 为「当前前缀和 - k」,说明这个之前出现的前缀和,满足「当前前缀和 - 该前缀和 == k」,它出现的次数,累加给 count
func subarraySum(nums []int, k int) int {m := map[int]int{0:1}sum, res := 0, 0for i := 0; i < len(nums); i++ {sum += nums[i]if cnt, ok := m[sum - k]; ok {res += cnt}m[sum] += 1}return res
}
http://www.yidumall.com/news/96444.html

相关文章:

  • 免费学做淘宝的网站女教师遭网课入侵视频大全
  • 做房产网站不备案可以吗企业网络推广方式
  • 网站排名优化课程口碑营销推广
  • 制作灯笼图片河南网站seo靠谱
  • dreamweaver8.0做网站利搜网站排名软件
  • 网架制造厂新站整站优化
  • 专业建站公司联系方式网站优化团队
  • 网站建设规划方书模板头条权重查询
  • 响应式布局网站个人推广app的妙招
  • 做汽车网站怎么挣钱吗营销软件app
  • 网站建设项目验收付款seo手机关键词排行推广
  • 建筑网站首页seo课培训
  • 网站后台百度商桥代码哪里安装seo资源
  • 学网页设计先学什么百度优化是什么
  • 建设一个一般网站需要多少时间中牟网络推广
  • 网站建设违约交付南京最大网站建设公司
  • 公明做企业网站营销策划推广公司
  • 大企业网站建设百度搜索量排名
  • 利于seo优化的网站郑州seo外包公司哪家好
  • 淄博网站建设0533cl怎样建立自己的网站平台
  • 郑州购物网站建设免费google账号注册入口
  • 加油站项目建设背景谷歌广告推广网站
  • 部署wordpress站点营销活动策划
  • 软件下载网站地址百度手机助手网页版
  • 网站确定关键词 如何做青岛网络seo公司
  • 北京网站推广网络营销课程个人总结范文
  • 中山做网站公司搜索引擎营销就是seo
  • 如何做网站的登录日志夫唯seo怎么样
  • javaee可以做网站么免费推广的网站有哪些
  • u网站建设无锡seo网站排名