随笔分类 - 算法
记录一些常用的算法和数据结构,对自己刷题的总结
摘要:单调栈(Monotone Stack) 栈的应用中有一类问题称为单调栈(Monotone Stack)问题,可以巧妙的将某些问题的时间复杂度降到「O(n)级别」。那么什么是单调栈呢? 所谓单调栈,就是保持栈中的元素是单调的。假设把数组 [2 1 4 6 5]依次入栈,并保持栈的单调递增性,如下: 元
阅读全文
摘要:注:本文目前只提供速记,不提供详解。 1. 5. 最长回文子串[五星] 状态: 令 dp[i][j] 表示子数组 s[i...j] 是否为回文子串。初始化 dp[i][i] = true,并且 dp[i][i+1] = (s[i]==s[i+1])。 状态转移方程: \[ dp[i][j] = dp
阅读全文
摘要:本文对LeetCode中的买卖股票问题做了一个汇总。 121. Best Time to Buy and Sell Stock 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:
阅读全文
摘要:概述 堆(Heap)是一个可以被看成近似完全二叉树的数组。树上的每一个结点对应数组的一个元素。除了最底层外,该树是完全充满的,而且是从左到右填充。—— 来自:《算法导论》 堆包括最大堆和最小堆:最大堆的每一个节点(除了根结点)的值不大于其父节点;最小堆的每一个节点(除了根结点)的值不小于其父节点。
阅读全文
摘要:【问题描述】(本文代码以在面试题40. 最小的k个数中可提交) 在无序数组 nums[] 中,找出最小(或最大)的 k 个数。例如,输入[4, 5, 1, 6, 2, 7, 3, 8]这8个数字,则最小的4个数字是1、2、3、4。 思路1:直接排序 直接将数组进行排序,然后取出前 k 个元素即可。这
阅读全文
摘要:01背包问题 问题描述: 给定 n 件物品,物品的重量为 w[i],物品的价值为 c[i]。现挑选物品放入背包中,假定背包能承受的最大重量为 V,问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 针对这个问题,本人理解了多次,也了看各种题解,尝试各种办法总还觉得抽象;或者说,看了多次
阅读全文
摘要:场景 在搜索引擎项目中,我用到了最短编辑距离算法,用于对用户输入的查询进行纠错,从而优化查询结果。比如说,我们在输入英文单词的时候,由于疏忽或者记忆不准确,会有拼写错误的情况。以单词beautiful 为例,假设我们在搜索引擎中输入beauitful(我故意拼错了),看看会发生什么。 如下图所示,虽
阅读全文

浙公网安备 33010602011771号