算法常见技巧 -爱代码爱编程
快速幂 题目 快速幂 典型题例: 给定 n 组 a
代码编织梦想
DFS 深度优先搜索( Depth First Search): 一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回
BFS 广度优先搜索: 应用一:层序遍历 应用二:最短路径 题目 机器人的运动范围 典型题例: 地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。 一个机器人从坐标 (0,
什么是贪心 贪心:贪心在解决问题上是目光短浅的,仅仅根据当前的已知信息就做出选择,并且一旦做了选择,就不再更改 常见的贪心问题 区间问题Huffman树排序不等式绝对值不等式推公式 排序不等式 排队打水 典型题例
什么是贪心 贪心:贪心在解决问题上是目光短浅的,仅仅根据当前的已知信息就做出选择,并且一旦做了选择,就不再更改 常见的贪心问题 区间问题Huffman树排序不等式绝对值不等式推公式 区间问题 区间覆盖 典型题例:
什么是贪心 贪心:贪心在解决问题上是目光短浅的,仅仅根据当前的已知信息就做出选择,并且一旦做了选择,就不再更改 常见的贪心问题 区间问题Huffman树排序不等式绝对值不等式推公式 区间问题 区间选点 典型题例:
什么是动态规划 动态规划通过额外的空间将已经搜索过的相似的结果(指某些具有相同性质解的集合)用一个数组存起来,所以DP中的状态转移看上去是某两三个值之间的推导,其实是某两三个集合之间的状态转移! 常见的线性DP问题 最
什么是动态规划 动态规划通过额外的空间将已经搜索过的相似的结果(指某些具有相同性质解的集合)用一个数组存起来,所以DP中的状态转移看上去是某两三个值之间的推导,其实是某两三个集合之间的状态转移! 常见的背包模型 01背
什么是动态规划 动态规划通过额外的空间将已经搜索过的相似的结果(指某些具有相同性质解的集合)用一个数组存起来,所以DP中的状态转移看上去是某两三个值之间的推导,其实是某两三个集合之间的状态转移! 常见的背包模型 01背
时间复杂度 int init() { // $ 作为整个串的左边界 res[0] = '$'; // 把串的字符放在#之间,原因在于方便处理,无论是偶数或奇数回文串都会转化为奇数串 res[1] = '#'; int len = 2; for(int i = 0; i < s.length(); ++i) { res[len++
已知后序与中序输出前序(先序) 后序:2 3 1 5 7 6 4(左右根) 中序:1 2 3 4 5 6 7(左根右) 分析:由于后续的最后一个节点总是根节点(root),从中序中找出根节点坐标i,i把中序分成左右子树。依次类推。。。 后序序列左子树root = root - 1 + i - r 后序序列右子
时间复杂度:。 在左闭右开 区间[l, r)内查找v. 否则返回-1 int bsearch(int *a, int l, int r, int v) { while(l < r) { int m = l + (r - l) / 2 //这种写法可以防止溢出 if(a[m] == v) return v; else
/* * 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 */ public class BubbleSort { public static void main(St