算法——和为K的连续子数组
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
链接: leetcode.
解题思路:
- 第一反应回想到双指针的算法,但是数组中的元素有可能为负数,所以,时间复杂度可能是n三方的。
- 然后到利用数组的前缀和,然后二次循环遍历,这样时间复杂都是n方的。
- 其实可以改进上一种算法,将已经遍历过的元素前缀和存到哈希表中,然后在计算之后的总和时,只要查询哈希表中相应值的数量,就能知道这个位置总和为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的连续子数组相关推荐
- sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...
题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...
- 算法学习-零子数组,最大连续子数组
题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...
- 算法/编程练习:寻找和至少为K的最短子数组
寻找和至少为K的最短子数组 1. 题目 题目来自LeetCode: https://leetcode-cn.com/problems/shortest-subarray-with-sum-at-lea ...
- LeetCode——974.和可被K整除的子数组
这几天力扣总算是放我这个菜鸡一马,来了一些中等难度题.和可被K整除的子数组,一看到反正最近脑子里都是双指针.滑动窗.前缀和.动态规划之类的东西.话不多说,赶紧看一看今天的题. 974.和可被K整除的子 ...
- 974. 和可被 K 整除的子数组
974. 和可被 K 整除的子数组 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解 ...
- 【每日一题Day8】LC862和至少为K的最短子数组
*和至少为K的最短子数组[LC862] 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度.如果不存在这样的 子数组 ,返回 -1 ...
- python求最大连续子数组
寻找最大子数组问题: 给定数组A:寻找A中的和最大的非空连续子数组.我们称这样的连续子数组为最大子数组(maximum subarray) 1.暴力求解:两个循环,时间复杂度为O(n^2) 2.用分治 ...
- LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)
581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...
- 581. 最短无序连续子数组
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 请你找出符合题意的 最短 子数组,并输出它的长度. 示例 1: 输入:nums ...
最新文章
- axure 如何设置选项联动_Axure教程|用中继器做信息流,高仿人人都是产品经理网...
- OpenMP参考链接
- P2756 飞行员配对方案问题【网络流24题】
- VMware9安装Ubuntu 12.10图文详细教程
- JavaScript中的Math方法演示
- DBCC--SHRINKDATABASE
- QT每日一练day29:QT中的多线程探究
- C# GDI绘制波形图
- xkcd目录_12条展示AI真相的XKCD片段
- Qt 递归安装父控件的所有子孙控件事件过滤器 遍历安装事件过滤器
- Hibernate中类的继承使用union-subclass实现
- Ubuntu打开wps文件缺少字体
- Windows 11的临时文件清理工具
- 【原创--学习整理】学习bat和dos的相关资料整理--汇总
- 程序员如何管理自己的代码
- 国际信用卡如何支付(流程演示图)
- 前端学习-品优购实践
- 区块与共识(一):解决竞选记账权的问题
- 如何关闭Internet Explorer 增强的安全配置
- 利用FFmpeg将 IPCamera 的RTSP转码成RTMP发布在RED5