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

无锡网站建设中国营销网

无锡网站建设,中国营销网,建网站咨询,网站会员推广邀请系统给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2 解题思路: 这道题求的是子数组和为k&#…

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

解题思路:
这道题求的是子数组和为k,看到子数组和就要想到前缀和之差,即pre_sum[i] - pre_sum[j] = k.
所以就需要先计算出前缀和数组pre_sum,然后遍历i,然后再遍历j,找到所有即i结尾的并且和为k的子数组。

class Solution {public int subarraySum(int[] nums, int k) {int n = nums.length;int ans = 0;int[] pre_sum = new int[n]; // 记录前缀和pre_sum[0] = nums[0];for(int i = 1; i < n; i++){pre_sum[i] = pre_sum[i-1] + nums[i];}for(int i = 0; i < n; i++){// 如果pre_sum[i]等于k也要加一if(pre_sum[i] == k){ans++;}for(int j = 0; j < i; j++){if(pre_sum[i] - pre_sum[j] == k){ans++;}}}return ans;}
}

优化:
通过分析代码可以知道,对于每个i,j都要从头开始遍历一遍,浪费了大量时间。如果我们能在O(1)的时间内就知道 i 前面有哪些前缀和,就能节省时间。那么就自然想到用HashMap记录下 i 前面有哪些前缀和以及出现的次数。
并且在map里面添加一个key为0的元素,这样就不用单独判断当pre_sum=k的情况了。

class Solution {public int subarraySum(int[] nums, int k) {int n = nums.length;int ans = 0;int[] pre_sum = new int[n]; // 记录前缀和pre_sum[0] = nums[0];Map<Integer, Integer> cnt = new HashMap<>();for(int i = 1; i < n; i++){pre_sum[i] = pre_sum[i-1] + nums[i];}cnt.put(0, 1);for(int i = 0; i < n; i++){ans += cnt.getOrDefault(pre_sum[i] - k, 0);cnt.put(pre_sum[i], cnt.getOrDefault(pre_sum[i], 0) + 1);}return ans;}
}

优化:
我们可以发现,两次for循环其实可以合并为一个for循环,并且我们已经用HashMap记录了 i 之前的前缀和了,那么就可以不用单独用数组来存储前缀和了。

class Solution {public int subarraySum(int[] nums, int k) {int ans = 0;int sum = 0;Map<Integer, Integer> cnt = new HashMap<>();cnt.put(0, 1);for(int num : nums){sum += num;ans += cnt.getOrDefault(sum - k, 0);cnt.put(sum, cnt.getOrDefault(sum, 0) + 1);}return ans;}
}
http://www.dtcms.com/wzjs/43685.html

相关文章:

  • 义乌网站建设网站优化分析
  • 上百度推广的网站要多少钱b站是哪个网站
  • 遵义公司做网站seo就业前景如何
  • 网站设计是什么专业北京网站
  • 网站 参数北京网站优化哪家好
  • 动态网站开发课程设计实训总结服务推广软文范例
  • 西安分类信息seo公司杭州优化关键词
  • 做网站建设的名声很差吗无锡百度
  • 做一个网站需要哪些步骤营销网站建站公司
  • 手机旅游网站建设微商软文范例
  • 网站设计规划方案seo推广怎么样
  • 手机网站课程百度问答
  • 手机网站菜单设计天津seo外包
  • 外贸公司的网站怎么做如何优化培训方式
  • 有没有做网站的多少钱抖音seo公司
  • 宁夏建设网站的公司电话营销推广的作用
  • 网站开发哪种语言更安全seo服务顾问
  • 网站建设效果图百度推广手机app下载
  • 做网站维护怎么找客户关键词搜索热度
  • 基于web的旅游网站设计重庆seo俱乐部联系方式
  • h5手机网站建设是什么意思亚洲精华国产精华液的护肤功效
  • 潍坊网站建设公司电话手游免费0加盟代理
  • 北京市网站建设sem推广软件选哪家
  • 做网站需要看那几点软文发布门户网站
  • 专业设计网站有哪些成人短期培训能学什么
  • 网站开发语言有几种国外域名
  • 长春九台建设局网站老铁外链工具
  • 网站兼容工具百度竞价开户3000
  • 商务网站建设与维护试题app推广接单平台有哪些
  • 自己做个公司网站茶叶seo网站推广与优化方案