给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
链接: leetcode.

解题思路:

  1. 第一反应回想到双指针的算法,但是数组中的元素有可能为负数,所以,时间复杂度可能是n三方的。
  2. 然后到利用数组的前缀和,然后二次循环遍历,这样时间复杂都是n方的。
  3. 其实可以改进上一种算法,将已经遍历过的元素前缀和存到哈希表中,然后在计算之后的总和时,只要查询哈希表中相应值的数量,就能知道这个位置总和为K的数量。
// created by lippon
class Solution {public int subarraySum(int[] nums, int k) {int n = nums.length; if(n == 0) return 0;int[] l = new int[n + 1];int res = 0, sum = 0;for(int i = 0; i < n; i++) {sum += nums[i];l[i + 1] = sum;}Map<Integer, Integer> map = new HashMap<>();for(int i = 0; i <= n; i++) {// 查询表中,与当前前缀之差为k的值的个数if(i > 0 && map.containsKey(l[i] - k)) res += map.get(l[i] - k);// 再将当前前缀放入表中map.put(l[i], map.getOrDefault(l[i], 0) + 1);}return res;}
}

算法——和为K的连续子数组相关推荐

  1. sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...

    题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...

  2. 算法学习-零子数组,最大连续子数组

    题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...

  3. 算法/编程练习:寻找和至少为K的最短子数组

    寻找和至少为K的最短子数组 1. 题目 题目来自LeetCode: https://leetcode-cn.com/problems/shortest-subarray-with-sum-at-lea ...

  4. LeetCode——974.和可被K整除的子数组

    这几天力扣总算是放我这个菜鸡一马,来了一些中等难度题.和可被K整除的子数组,一看到反正最近脑子里都是双指针.滑动窗.前缀和.动态规划之类的东西.话不多说,赶紧看一看今天的题. 974.和可被K整除的子 ...

  5. 974. 和可被 K 整除的子数组

    974. 和可被 K 整除的子数组 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解 ...

  6. 【每日一题Day8】LC862和至少为K的最短子数组

    *和至少为K的最短子数组[LC862] 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度.如果不存在这样的 子数组 ,返回 -1 ...

  7. python求最大连续子数组

    寻找最大子数组问题: 给定数组A:寻找A中的和最大的非空连续子数组.我们称这样的连续子数组为最大子数组(maximum subarray) 1.暴力求解:两个循环,时间复杂度为O(n^2) 2.用分治 ...

  8. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  9. 581. 最短无序连续子数组

    给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 请你找出符合题意的 最短 子数组,并输出它的长度. 示例 1: 输入:nums ...

最新文章

  1. axure 如何设置选项联动_Axure教程|用中继器做信息流,高仿人人都是产品经理网...
  2. OpenMP参考链接
  3. P2756 飞行员配对方案问题【网络流24题】
  4. VMware9安装Ubuntu 12.10图文详细教程
  5. JavaScript中的Math方法演示
  6. DBCC--SHRINKDATABASE
  7. QT每日一练day29:QT中的多线程探究
  8. C# GDI绘制波形图
  9. xkcd目录_12条展示AI真相的XKCD片段
  10. Qt 递归安装父控件的所有子孙控件事件过滤器 遍历安装事件过滤器
  11. Hibernate中类的继承使用union-subclass实现
  12. Ubuntu打开wps文件缺少字体
  13. Windows 11的临时文件清理工具
  14. 【原创--学习整理】学习bat和dos的相关资料整理--汇总
  15. 程序员如何管理自己的代码
  16. 国际信用卡如何支付(流程演示图)
  17. 前端学习-品优购实践
  18. 区块与共识(一):解决竞选记账权的问题
  19. 如何关闭Internet Explorer 增强的安全配置
  20. 利用FFmpeg将 IPCamera 的RTSP转码成RTMP发布在RED5

热门文章

  1. 一种基于视频帧差异视频卡顿检测方案
  2. 抖音网页版入口登录链接地址
  3. BCI Competition 2008 – Graz dataset A个人翻译(附MATLAB安装BioSig)
  4. VDA19颗粒清洁度测试方法及要素
  5. 一日一技:用Python绘画有多好玩
  6. 使用VBA对Excel中的单元格按色阶赋颜色
  7. 数据中台建设的价值及数据中台架构
  8. 外置光驱DVD-RW错误解决
  9. 中标麒麟5.0安装(内含安装包)-小白手把手史上最全教程!
  10. cad标注样式快捷键_CAD新手福利:不懂标注样式修改的请进来一看