当前位置: 首页 > 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/33379.html

相关文章:

  • 免费视频素材网站推荐天津seo诊断技术
  • 网站建设开发哪些开发语言宁德市高中阶段招生信息平台
  • 网站开发用px好还是em好营销推广的主要方法
  • 免费html网站登录模板seo超级外链工具免费
  • 企业获客方式长沙seo排名公司
  • 深圳低价做网站百度的竞价排名是哪种方式
  • 做备案的网站优化防疫政策
  • 沈阳市住房和城乡建设局网站网站服务器
  • 小迪网站建设推广引流渠道
  • 网站建设开发决策站内推广有哪些具体方式
  • 学做甜点的网站上海seo优化公司bwyseo
  • led灯网站模板新媒体运营主要做什么
  • 医院电子网站建设5118数据分析平台
  • 5千ip的网站能赚多少钱seo搜索引擎优化试题
  • 个人网站设计策划seo搜索优化排名
  • 叫人开发网站注意事项网站目录扫描
  • 网站开发需要几个人seo一个月赚多少钱
  • 免费做任务赚钱的网站网站空间租用
  • 橙子建站的验证码安全吗引流黑科技app
  • 怎么做直播视频教学视频网站社会化媒体营销
  • 株洲网站建设服务平台网站推广的常用途径有哪些
  • wordpress 替换主题图片seo是哪里
  • 建设执业资格注册中心网站办事大厅网络营销业务流程
  • 做泰迪狗网站的意义如何推广自己的店铺
  • 可克达拉市建设局网站免费发帖推广平台有哪些
  • 音乐网站开发需求文档模板google推广费用
  • 如何做网站源码备份产品软文范例软文
  • 珠海做网站哪家专业50篇经典软文100字
  • 抚宁建设局网站国际新闻头条最新消息
  • 用安卓做网站天津百度快速排名优化