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

杭州手机网站建设美图秀秀网页版在线制作

杭州手机网站建设,美图秀秀网页版在线制作,手机照片制作成相册,wordpress 如何添加广告插件题目描述 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums [1,1,1], k 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 :数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整…

题目描述

给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
说明 :数组的长度为 [1, 20,000]。
数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subarray-sum-equals-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法 1:前缀和

思路

比较直白的想法是,先构建前缀和数组 prefix,计算以 i 结束的子数组的和,然后在这个数组中找到所有满足条件的 [i, j] 区间,也就是 prefix[j] - prefix[i] 等于 K。但这样找得两层循环了,时间复杂度比较高。

有没有只需要遍历一遍数组的方法呢?其实只要算一点点数学就好了:

  • 我们要找的一段区间 [i, j] 需要满足 prefix[j] - prefix[i] == k (i < j)。
  • 也就是当我们在遍历到 j 这个位置的时候,只要往 j 的左边去找到有没有 prefix[i] 等于 prefix[j] - k 就行,满足条件的 prefix[i] 可能有一个或多个哦。
  • 在遍历到 j 之前,我们已经遍历过 i 了 (i < j),所以我们只需要在遍历到 i 的时候用一个哈希表把 prefix[i] 存起来,就能实现 O(1) 时间的查找。

其实我们连 prefix 数组都不需要,因为我们在算出一个前缀和的时候,就已经把它存到哈希表里面去了。所以可以只用一个变量 prefix 来计算前缀和,在遍历 nums 数组的过程中不断更新 prefix,同时检查 map[prefix - k] 是否在之前出现过。

复杂度分析

  • 时间复杂度:$O(n)$, n 为数组长度,只扫描了一次数组。
  • 空间复杂度:$O(n)$, n 为数组长度,使用了一个哈希表来存每个前缀和出现的次数。

代码

JavaScript Code

/*** @param {number[]} nums* @param {number} k* @return {number}*/
var subarraySum = function (nums, k) {const map = {};let count = 0;let prefix = 0;map[prefix] = 1;for (let i = 0; i < nums.length; i++) {prefix += nums[i];if (prefix - k in map) {count += map[prefix - k];}map[prefix] = (map[prefix] || 0) + 1;}return count;
};
http://www.yayakq.cn/news/530532/

相关文章:

  • 自己做的网页怎么上传到网站做ui要上那些网站
  • 做外贸必看的网站和论坛有哪些深圳市建设工程合同备案网站
  • 福州市城乡建设网站张麒蛰top域名
  • 湛江做网站优化网页建设网站代码
  • 深圳竞价网站wordpress新建会员主页
  • 网站页面架构域名年费多少网站建设
  • 哈尔滨建站的系统图片转链接生成器在线
  • 平阳网站建设昆明网建
  • 瀑布流 网站 php 源码建设银行企业网站首页
  • 做网站发布网o2o网站建设方案 多少钱
  • 自己做网站可以赚钱吗做网页怎么在网站播放视频
  • 浙江市建设网站朋友圈软文
  • 有一个网站叫浪什么个人网站设计背景图
  • 域名 备案 没有网站吗上海人才网官网招聘招聘
  • 宁波网站建设服务商wordpress视频广告插件
  • 付费做SPaSS统计分析的网站宁夏建设厅网站
  • 气象网站建设管理的不足企业宣传文案模板
  • 微信网站公司无锡网站优化哪家好
  • 云南建设工程招标网站搭建网站流程视频
  • 厚街镇做网站郑州网站推广排名公司
  • 西宁做网站君博领先做视频网站 带宽多少才合适
  • 普陀做网站价格怎样建网站?
  • 网站seo外包公司电脑上怎么做设计效果图
  • 江阴网站设计哪家好磁力链搜索引擎入口
  • 建设投票网站的目的什么网站做前端练手好
  • 做网站需要电脑吗做的网站提示不安全问题
  • 网站的后台是开发做的上虞网站建设公司
  • 长沙企业建站程序濮阳做网站的价格
  • 北京做校园的网站网站建设的主要技术指什么
  • 洱源名师工作室网站建设个人注册公司需要哪些资料