1. 位运算、算法、简单排序
- 位运算与正负数
- 算法到底是什么
- 明确知道怎么解
- 明确知道怎么尝试(图灵)
- 案例:阶乘的和
- 简单排序
- selectionSort
- bubbleSort
- insertSort及其优化
2. 数据结构、前缀和、对数器
- 数据结构分类
- 数组:连续结构
- 便于寻址;不便于增删数据
- 单链表、二叉树、图:跳转结构
- 不便于寻址;便于增删数据
- 数组:连续结构
- 前缀和数组(为了解决需求:数组中[L…R]之间的sum)
- 制作HELP数组,每一个值,是本下缀的值与前一个下缀的值的和
- H[i]=sum(arr[0…i])(HELP数组第i个值:是arr数组从0累加到i)
- 例:求3-7的和:H[7]-H[5]
- [L…R]之间的sum
- L==0,H[R]
- L!=0,H[R]-H[L-1]
- Math.random()
- 返回[0,1)的一个小数,[0,x)范围上的数出现概率是x²
- 从1
5随机到17随机(黑盒)- 题目:
- 条件函数
f
,可以等概率返回1-5的数 - 目标函数
g
,可以等概率返回1-7的数
- 条件函数
- 题解:
- 先用条件函数
f
获得一个f2()
=0-1等概率发生器:- 如果得到1、2就返回0,
- 如果得到4、5,就返回1,
- 如果得到3,就重新调用f。
f3()
=0~7等概率发生器:需要三个f2()
=0-1等概率发生器:- _ _ _ 才能8个结果等概率
f4()
=0~6等概率发生器- 如果遇到7,就重新调用
f3()
- 如果得到0 1 2 3 4 5 6,就可以了
- 如果遇到7,就重新调用
0~6
+1 ==>1~7
f4()
+1
- 先用条件函数
- 题目:
- 从a
b随机到cd随机(黑盒)- 常见题目:
- 条件函数
f
,可以等概率返回3-19的数 - 目标函数
g
,可以等概率返回17-56的数
- 条件函数
- 题解:
- 获得01等概率发生器:
- 3-10:0
- 11 :重做
- 12-19:1
- 56-17=39也就是去制作0~39等概率发生器+17
- 看看需要几个二进制位
- _ _ _ _ _
- 2^6>=39 n=5
- 6个位时,是0-63>39,可以做到0-63位等概率返回
- 若大于39,就重做
- 获得01等概率发生器:
- 常见题目:
- 01不等概率随机到01等概率随机
- 题目
- 条件函数
f
,0:p概率,1:(1-p)概率 - 目标函数
g
,可以等概率返回0和1
- 条件函数
- 题解:
- f*f
- 00:重做
- 11:重做
- 01:0
- 10:1
- f*f
- 题目
3. 二分、复杂度、动态数组、哈希表
- 二分法
- 有序数组中找到num
- 有序数组中找到>=num最左的位置
- 有序数组中找到<=num最右的位置
- 局部最小值问题
- 有一个数组,无序。(任意两个相邻数字不相等)
- 整体无序,但是可以二分
- 局部最小:
- [0]<[1] 0
- [N-2]>[N-1] N-1
- 左<[i]<右 i
- 时间复杂度
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。