摘要: 题目描述 给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−10∼n−1 的范围内,或数组中不包含重复数 阅读全文
posted @ 2019-07-16 01:38 roov 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 蓝线部分的区域是由一个圆不断更新圆心和半径形成的 圆初始为A(ax, ay),半径为r 圆随着参数t而变化,t的取值范围为(0, 1],圆的半径为r/t, 圆心坐标为(ax/t, ay/t) 圆扩展的方向为向量 v 方向 给一点D(a, b),判断D是否在蓝色区域内 解决方案: 1. 判 阅读全文
posted @ 2019-07-15 22:14 roov 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 单链表 使用数组模拟单链表 使用一个数组存储值, 另一个数组存储next 邻接表 存储图和树 e[idx] = val; ne[idx] = next; 双链表 优化某些问题 int l[idx], r[idx] 下标为0表示 左端点, 下标为1表示右端点 栈 //插入 stk[++tt] = x; 阅读全文
posted @ 2019-07-11 12:58 roov 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 定义:当两个区间有交集时,合并为一个区间 如[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) 编辑
摘要: 考虑四种情形 A + B A - B A * a A / a 大整数的存储 一般个位存在下标为0的位置,最高位存在下标最大的位置,方便进位 大整数的加法 假设Ai, Bi都存在,c = Ai + Bi + c,c为进位 假设Ai存在,Bi不存在,则 c = Ai +c 假设Ai不存在,Bi存在,则 阅读全文
posted @ 2019-07-09 20:10 roov 阅读(10) 评论(0) 推荐(0) 编辑
摘要: tips: 1.二分查找并不一定需要单调性 2.如果有单调性,一定可以二分,可以二分的不一定非有单调性 3.二分的本质是每一次循环需要选择答案所在的区间,即更新l, r两个坐标 整数二分 对于整数二分,有两种方法,分别适用于两个不同的情况,即想找到红色线的蓝圈还是绿色线的蓝圈 如果想找红色线的蓝圈, 阅读全文
posted @ 2019-07-08 19:28 roov 阅读(9) 评论(0) 推荐(0) 编辑