链表结构
单向链表,双向链表,暂时没将具体算法
栈、队列
用链表实现和用数组实现
递归行为
定义
在函数里调用自身,一般用来将大问题划分成多个小问题,简化问题。
主方法
T
[
N
]
=
a
∗
T
[
N
b
]
+
O
[
N
d
]
T[N] = a*T[\frac N b]+O[N^d]
T[N]=a∗T[bN]+O[Nd]
时间复杂度为:
1:
l
o
g
a
b
>
d
log_ab > d
logab>d时,
O
[
N
]
=
O
[
N
(
l
o
g
a
b
)
]
O[N]=O[N^(log_ab)]
O[N]=O[N(logab)]
2.:
l
o
g
a
b
>
d
log_ab > d
logab>d时,
O
[
N
]
=
O
[
N
d
]
O[N]=O[N^d]
O[N]=O[Nd]
3.
l
o
g
a
b
=
d
log_ab = d
logab=d时,
O
[
N
]
=
O
[
N
d
∗
l
o
g
N
]
O[N]=O[N^d*logN]
O[N]=O[Nd∗logN]
哈希表
在传参时注意点
Java中int,double等类型为基本类型,传参时按值传递。Integer,Double等类型传参时是引用传递。
区别:
int a = 127;
int b = 127;
a == b;
结果为true,对具体数字无要求
Integer a = 127;
Integer b = 127;
a == b;
只有在具体数字x,
−
128
<
=
x
<
=
127
-128 <= x <= 127
−128<=x<=127时结果为true,其它为false。
因为在这个范围内内存是同一个。
增删改查
无论数据量多大,时间复杂度都为O[1]。