随笔分类 - 算法
摘要:单调栈 单调栈:是一种容器,类似于大小堆,一维数组: 单调递增栈:从栈低到栈顶是递增的,【记录的是已遍历更大的数,求的是右边第一个更小的数】,获取当前元素,左边大于的第一个数,右边小于的第一个数; 单调递减栈:从栈底到栈顶是递减的,【记录的是已遍历更小的数,求的是右边更大的数】,因此当前元素能够获取
阅读全文
摘要:动态规划: 特点:核心是状态转移【由许多的重叠子问题组成】, 当前状态依赖于上一个状态【递推公式】, 其次是初始化【对初始情况进行讨论】 遍历顺序:状态的推到方向判断【回文字串】 经典题型: 基础题型: 斐波那契数:递推公式的推导; 爬楼的方法:多个状态相互叠加得到下一个状态; 爬楼梯的消耗:多个状
阅读全文
摘要:贪心算法: 特点: 从局部最优,从而达到全局最优 将一个问题进行分解为子问题,由子问题最佳得到全局最佳【关键在于怎么分解】; 分解: 横向分解:分解为不同的情况,分别进行考虑,最优情况往往取决于部分情况; 纵向分解:分为不同的步骤,保证当前步骤的最优情况; 经典题型: 简单题型: 分发饼干,柠檬睡找
阅读全文
摘要:回溯: 特点: 递归是向前,回溯就是需要考虑后退,它是一种搜索的方式; 类似于暴力搜索 + 剪支【提高效率】; 减支,是优化的唯一方式; 集合的大小构成了树的宽度,递归的深度构成了树的深度; for循环树的宽度,递归树的深度【多叉树】; 变量【宽度、深度】 在每一次的迭代中确定子树的宽度【去重问题】
阅读全文
摘要:二叉树: 数据结构: 满二叉树: 只有度为0和度为2的节点,而且度为0的在同一层; 深度:k,对应节点:2^k - 1【深度从1开始】; 完全二叉树 除了最底层可能没有填满,其余都达到最大值; 最底层也是从左边向右集中,可能包含1 - 2^(k - 1)个节点; 搜索树: 分别对左右子树的大小有限制
阅读全文
摘要:二分法: 在一个范围查找一个数字的起始和终止位置的时候, 通常需要将区间分成两个范围, [ l, mid - 1] 和 [mid, r] ; [ l, mid] 和 [mid + 1, r], 对于中间值mid 的计算,会默认值向下取整,所以这个范围,可能会陷入无限循环; 回溯算法: 组合 :叶子节
阅读全文
摘要:数组: 特点:数组在空间的地址是连续分布的,增加和减少都需要整体移动; 经典题型: 排序问题; 二分法; 双指针【快慢指针,相向指针】:双指针法将时间复杂度:O(n^2)的解法优化为 O(n)的解法。 滑动窗口【双指针的变体【固定一个指针,移动另一个指针】,窗口内的变量只能向一个方向变化,eg求和,
阅读全文

浙公网安备 33010602011771号