leetcode 2和c算法是我在学习算法和数据结构时保留的一些练习题和笔记。散记渗透问题:顶行到底行,相反,有一个虚拟的顶部和虚拟的底部以简化问题。数学表达式:$$ \sum_{i=1}^{n} i = 1+2+...+n = n(n+1)/2 $$ $$ \sum_{i=1}^{n} i-1 = 1+2+...+(n-1) = n(n-1)/2 $$
复杂性分析:
-
ϴ:紧的上下界
-
O:上限
-
π:下限
-
o:从未达到上限的表现
乘法与位移:一些编译器将乘法优化为位移。对我们来说,优化有时会损害可读性,请明智选择。真正的随机笔记:
-
使用堆栈而非动态数组有时更有效
-
对小数据集(<=3)的基本情况可以直接使用蛮力解决方案
-
排序优化为O(n)
-
返回最小值:A,B,C
-
对于无法应用主算法的地方,找到更合适的O(?)
双重for循环:如果第二个for循环有更多条件,double for循环可能为O(n)而不是O(n^2)
异或运算:1异或2异或1 = 2
在Java中插入/访问地图,或在C中使用有序映射(内部使用红黑树)为O(log n),无序映射(hashmap)为O(1)。
暂无评论