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

无锡网站建设2345网址大全

无锡网站建设,2345网址大全,做路线图的网站,wordpress 上传主题 ftp给你一个整数数组 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/195637.html

相关文章:

  • 上海做网站哪里有线上营销推广的公司
  • 酒店网站建设项目报告书永久免费客服系统有哪些软件
  • thinkphp怎么做网站最新新闻事件今天疫情
  • 四川省建设领域信用系统网站在线crm软件
  • 做设计的网站有哪些网站建设制作
  • 南通做网站优化公司淮北seo排名
  • 荆门网站开发有哪些百度云盘搜索引擎入口
  • 大连网站怎么百度网页版怎么切换
  • 做问卷赚钱网站百度商家平台
  • 优秀网站大全在线bt种子
  • 泰州专门做网站外链网
  • 安徽华强建设集团网站广告seo是什么意思
  • 公司百度网站怎么做的关键词自助优化
  • 手机触屏版网站开发网上教育培训机构
  • 虚拟电脑可以做网站吗seo整站网站推广优化排名
  • wordpress主机404用广州seo推广获精准访问量
  • 设计师常去的网站seo关键词外包公司
  • php软件网站建设网络营销方法
  • win10 电脑做网站服务器百度电话怎么转人工
  • 网站建设海南网络营销策划方案论文
  • 用jsp做电影网站的界面网页怎么优化
  • java 网站开发开什么书seo培训学院官网
  • 网站建设哪个公司网络营销工程师
  • html5门户网站模版沈阳seo按天计费
  • 建销售网站需要多少钱旧版优化大师
  • 设计资源网站大推荐备案域名
  • 免费 wordpress优化设计方案
  • 邮箱注册过的网站查询抖音代运营大概多少钱一个月
  • 手机网站建设 如何获得更好的排名企点官网
  • 微信微网站建设平台精准粉丝引流推广