摘要: 定义:当两个区间有交集时,合并为一个区间 如[1, 2], [2, 4]可合并为[1, 4] 方法: 1. 将各区间按区间起始大小升序排列 2. 维护变量start, end,表示当前区间的起始,结束 3. 考虑以下三种情况 情况一: 下一段区间的起始小于end,则更新end, end = max( 阅读全文
posted @ 2019-07-10 23:13 roov 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 离散化 当一个数组长度较大,数组中仅有少量元素有值 我们需要对其进行多次查询操作,查询某一区间的元素的总和是多少 此时我们可对该数组进行一系列的操作,只关心有值的元素下标和查询操作的左右区间下标 离散化就是对这些下标进行一个映射 映射 对于一个连续数组A,求区间[l, r]的元素总和,l, r为连续 阅读全文
posted @ 2019-07-10 21:54 roov 阅读(5) 评论(0) 推荐(0) 编辑
摘要: n的二进制表示里第k位是多少,从个位开始数 1. 先把第k位移到最后一位 n >> k 2. 看个位是多少 x&1 n >> k & 1 lowbit(x):返回x的最后一位1 x = 1010 返回 10 x = 101000 返回 1000 lowbit()应用:统计x的二进制表示1的个数 阅读全文
posted @ 2019-07-10 16:38 roov 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 双指针算法有两种 一种是两个指针指向不同的序列,比如归并排序 另一种是两个指针指向相同的序列,比如快速排序 双指针算法的核心思想:优化 对于一个一维数组,查找一段满足要求的区间往往需要O(n^2)的时间 而双指针算法可将O(n^2)优化成O(n) 阅读全文
posted @ 2019-07-10 16:07 roov 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 前缀和 定义前缀和 S(i)= a1 + a2 + a3 + ... + ai,且S0 = 0 作用:对于一个区间[l, r]求和,可直接用S(r) - S(i-1)求得 对于二维,某一区域的数组之和,同样可使用前缀和思想 用S(i, j)表示前i行,j列元素之和,若求紫色区域面积,只需要用S(粉) 阅读全文
posted @ 2019-07-10 00:28 roov 阅读(4) 评论(0) 推荐(0) 编辑