排列组合
排列组合(Permutation and Combination) 加法原理 完成一个工程可以有 $n$ 类办法, $a_i(1 \leq i \leq n)$ 代表第 $n$ 类方法的数目。那么完成这件事共有 $S=a_1+a_2+ \cdots + a_n$ 种不同的方法。 乘法原理 完成一个工程需要分 $n$ 个步骤,$a_i(1 \leq i \leq n)$ ...
排列组合(Permutation and Combination) 加法原理 完成一个工程可以有 $n$ 类办法, $a_i(1 \leq i \leq n)$ 代表第 $n$ 类方法的数目。那么完成这件事共有 $S=a_1+a_2+ \cdots + a_n$ 种不同的方法。 乘法原理 完成一个工程需要分 $n$ 个步骤,$a_i(1 \leq i \leq n)$ ...
Math(数学) 我爱数学!😀 绝对值不等式 考虑以下公式的最小值,其中 $x_i$ 是数值, $a_i$ 是其权重,即重复出现的次数: \[\min \sum_{i=1}^{n} {a_i|x-x_i|} = ?\] 此处就有一个问题,当 $x$ 等于多少时,可以取到最小值? 很容易就应该想到,两两配对的话,例如: \[|x-...
链表(Linked List) 链表采用链状结构,指针访问相邻的节点。 单向链表: type node struct { val interface{} next *node } 双向链表: type node struct { val interfa...
堆(Heap) 一般也就用到大顶堆和小顶堆,顶堆的定义是递归进行的,其父节点的权值不小于/不大于其子节点,下面将以大顶堆为例来介绍顶堆的基本操作。 大顶堆 底层实现:数组(切片!但是我就是乐意叫他数组!) 哨兵: 设定数组下标为 0 的元素为场景中最大元; ...
图(Graph) 图的基础就是图的遍历,树或者森林也是特殊的图,遍历方法通常就是 DFS 深度遍历和 BFS 广度遍历。 图的遍历 Graph Traverse 通用结构 type graph [][]int type visited [][]bool var surrounds [][]int = [][]int\{\{-1, 0}, {1, 0}, {0, -1...