时间复杂度
O(1) 常数复杂度
O(log n) 对数复杂度
O(n) 线性时间复杂度
O(n^2) 平方
O(n^3) 立方
O(2^n) 指数
O(n!) 阶乘

注意:只看最高复杂度
O(1)

$a = 1000;
echo $a;

$a = 1000;
echo $a;
echo $a,”hahahha”;
echo $a,”hahahah”,$a;

0(n)
for($i = 1; $i <= $n; $i++){
echo $i,”\n”;
}

O(n^2)
for($i = 1; $i <= $n; $i++){
for($j = 1; $j <= $n; $j++){
echo $i,”\n”, $j;
}
}

0(log(n))
for($i = 1; $i <= $n; $i*=2){
echo $i,”\n”;
}

0(k^n)
for($i = 1; $i <= pow(2, $n); $i++){
echo $i,”\n”;
}

0(n!)
for($i = 1; $i <= $n!; $i++){
echo $i,”\n”;
}

example: 1 + 2 + 3 + … + n
硬循环:
$susm = 0;
for($i =1; $i <= $n; $i++){
$sum += $i;
}

优化:n(n+1)/2
$sum = $n($n+1)/2

什么是递归?
fibonacci array: 1,1,2,3,5,8,13,21,24
F(n) = F(n-1) + F(n-2)

def fib(n):
if n == 0 or n == 1:
return n;
return fib(n-1) + fib(n-2)

主定律

Deliberate Practicing
坚持、刻意练习
练习缺陷、弱点地方
不舒服、不爽、枯燥

数组 链表(array list)
连续内存 劣势 insert update best o(1) bad o(n) avg o(n/2)->o(n)

数组:
access: o(1)
insert: avg o(n)
update: avg o(n)

linked list:
access: o(n)
insert: o(1)
update: o(1)

double linked list:
access: o(n)
insert: o(1)
update: o(1)

practice:
https://leetcode-cn.com/problems/reverse-linked-list/
https://leetcode-cn.com/problems/swap-nodes-in-pairs/
https://leetcode-cn.com/problems/linked-list-cycle/
https://leetcode-cn.com/problems/linked-list-cycle-ii/
https://leetcode-cn.com/problems/reverse-nodes-in-k-group/