
累加和矩阵
主要记载数组子序列或者字符串子序列(连续或者不连续)的解法
Czy_whlg
不忘本心!
展开
-
累加和矩阵问题总结
这类题我做的不是很多,但碰到过的大致都具有以下特点: ①要求数组内的元素下标是连续的,即连续子序列 ②不考虑排列顺序,只考虑连续子序列的总和 主要用到一个定理:a + b = c,那么b = c - a;即可以通过累加和的方式进行求解,在往前遍历累加的过程中,可以直接求解出目标。 如果只是判断是否存在等于目标值,只需用set容器保存之前的值即可;若要求满足要求的总的个数,需要用到map去存...原创 2020-03-02 08:48:45 · 1385 阅读 · 0 评论 -
Subarray Sum Equals K
1.解析 题目大意,求解连续子数组的和等于k的个数。 2.分析 涉及连续子数组的问题利用累加和是最有效的。比较简单的方法是,直接利用二重循环求求解,第一层循环表示起始的位置,第二层循环从该位置开始逐个相加,然后和k判断即可,时间复杂度为O()。 class Solution { public: int subarraySum(vector<int>& nu...原创 2020-02-21 11:05:23 · 487 阅读 · 0 评论 -
Continuous Subarray Sum
1.解析 题目大意,判断是否存在长度至少为2,和是k整数倍的连续子序列。 2.分析 这道题本质上和Contiguous Array是一样的。只不过换了个条件,另外还要注意k = 0情况下的处理。也是要用到子数组和去求解,我想到的是,用一个二层循环,第一个循环标记当前子序列的起始位置,第二个循环是依次将该起始位置作为起始坐标,依次和后面的元素相加,然后判断,这种做法最坏的时间复杂度为O()...原创 2020-02-15 12:38:14 · 254 阅读 · 0 评论 -
Contiguous Array
1.解析 题目大意,求解0和1的个数相等的最长连续子序列。 2.分析 刚开始我题目理解错啦,参考Grandyang的思路。一般求解连续子序列的题目,都要涉及到累加和,主要利用到的一个知识:a + b = c(a、b和c均为连续子序列的和); 如果a和c序列的和相等,则b子序列和为0。所以还涉及到一个trick,即如果当前元素是0,则标记当前为-1,这样将查找0和1个数相同的子序列转换成查...原创 2020-02-15 12:12:01 · 372 阅读 · 0 评论