leetcode
文章平均质量分 64
开发学习实录
这个作者很懒,什么都没留下…
展开
-
股票问题一网打尽
1.股票问题的引入 股票问题是动态规划问题中的经典场景问题,在腾讯的笔试题目当中也出现过,在第五题的位置,所以特地参考了大神的通用解题思路来系统的复习,其中也会涉及到状态机的概念,其实也就是买卖股票的过程中会出现几种特定的状态,买和卖作为一种操作策略会使得问题的状态从S1变为S2。当然在解题过程中也需要想着说能否和背包问题一样做一些空间的压缩,从二维到一维,从O(n)到O(1)。 这里给出参考的文章地址: (1)国外股票问题高亮 (2)国内优化版本文章2.通原创 2022-04-27 16:53:49 · 258 阅读 · 0 评论 -
数学问题
巧解数学问题在这里放一个暴论:数学方法基本上就是编程类问题的最优解。所以做题的时候如果能够运用到数学的知识,会大大减少解题的复杂度。公因数和公倍数 使用辗转相除法可以求解两个数的最大公因数,从而根据两个数的最大公因数可以求出两个数的最小公约数。 这里介绍一下辗转相除法的原理以及简单的证明过程: &nbs原创 2021-05-02 21:22:30 · 149 阅读 · 0 评论 -
位运算
位运算利用二进制运算的特性来进行一些优化。非常的神奇认识有哪些位运算符号^ 按位异或& 按位与| &nb原创 2021-04-29 13:57:35 · 44 阅读 · 0 评论 -
动态规划之五
字符串编辑问题的解释一般是针对于两个字符串,对于这两个字符串进行各种删除,增加,插入等操作来是的两个字符串相等。其实这里也是将两个字符串的匹配问题调整为两个字符串的子串的字符的操作问题,也就是第一个完整字符串的前i个字符和第二个字符串的前j个字符的操作问题,从而将问题转化为子问题,继而使用动态规划的方法来进行求解,一般此类问题无法使用之前提到的滚动数组的方法来进行空间压缩。经典算法题目leetcode 77 编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 wo原创 2021-04-27 19:11:52 · 38 阅读 · 0 评论 -
动态规划之四 股票问题
这里直接是粘贴两篇文章来做一下记录,一篇是国外社区的解答,一篇是对应的翻译,确实收益匪浅国外解答国内翻译原创 2021-04-27 00:01:54 · 166 阅读 · 0 评论 -
动态规划整理之三 背包问题
网上有很多的这方面的知识了,所以在这里我主要是复制集合这些算法思想,希望能够加深自己的学习印象,下面写的太全面了,我就直接列出:主要参考的就是《leetcode 101》和这篇知乎的内容再结合一下我做题的心得知乎文章链接背包问题九讲...原创 2021-04-25 21:41:36 · 86 阅读 · 0 评论 -
动态规划整理之二
动态规划整理之二分割类子问题leetcode 91解码方法一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26要 解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为: “AAJF” ,将消息分组为 (1 1 10 6) “KJF” ,将消息分组为 (11 10 6) 注意,消息不能分组为 (1 11 06) ,因为"06" 不能映射为 “F” ,这原创 2021-04-25 18:05:41 · 73 阅读 · 0 评论 -
动态规划整理之一
动态规划整理之一算法解释 动态规划是一种自下而上的寻优遍历,它只能运用于有最优子结构的问题,就是说能够分解为局部的子问题来求解的问题。 需要注意的是。动态规划和其他的深度/广度优先遍历一样都是将问题拆分为子问题来解决的。其中最本质的区别就在于动态规划在解决子问题的过程当中会不断的记录子问题的解,从而相比于递归,避免了大量的重复子问题的问题。而动态问题处理的关键就在原创 2021-04-24 19:49:32 · 229 阅读 · 1 评论 -
广度优先搜索
广度优先搜索广度优先搜索 不同于深度优先搜索的纵深搜索,广度优先搜索是一层一层的向外搜索的,拿一个图举例子就是,我们首先是要遍历一个节点的与之相连的所有的一层节点,然后就是从与当前节点相连的那一层节点中不断得取出节点进行一遍这个操作,所以在这个操作之中,我们需要用先进后出得队列来进行遍历。 口述算法的流程就是: &n原创 2021-04-23 18:05:46 · 134 阅读 · 0 评论 -
回溯法
回溯法算法解释 回溯法是优先遍历搜索的一种特殊情况,又称为试探法。常常用于需要记录节点状态的深度优先搜索。 通常来说,一般对于排列、组合、选择类问题使用这个方法比较方便,也就是说它是采用试错的思想来尝试性的分步解决问题。 具体的,在搜索到某一个节点的时候,如果我们发现目前的节点不是需求的目标的原创 2021-04-21 16:11:09 · 107 阅读 · 0 评论 -
深度优先搜索
深度优先搜索算法解释 深度优先搜索(depth-first search,DFS)在搜索到一个新的未曾访问过的节点之后,立刻对于当前的节点进行遍历;因此可以使用递归来实现,相应的很自然的也就可以使用先进后出的栈来实现。对于数或者图而言,由于总是遍历新的节点,所以总是向着更深处前进。 一般来说,深度优先搜索类型的题可以分为主函数和辅函数,主函数用于遍历所有的位置,也原创 2021-04-20 14:56:28 · 83 阅读 · 0 评论 -
排序算法的详细总结(附上代码讲解)
总体的介绍排序算法是非常重要也非常基础的算法,可以分为简单选择排序、直接插入排序、冒泡排序、希尔排序、堆排序、快速排序,归并排序,基数排序等。c++内置的sort()函数是集成了多种排序的方法,会按照输入的数组的规模选择不同的在测试中表现得更好得排序算法,所以一般来说它的效果是优于单一的某个排序算法的。对于面试,我们应该着重熟练的掌握快速排序,其他排序算法需要能够手撕。Nlog(N)常用的排序算法快速排序快速排序也是交换排序的一种,其基本原理是:将未排序的元素根据一个作为基准的主元分为两个子序列,其原创 2021-04-19 16:49:07 · 120 阅读 · 0 评论 -
二分查找:双指针的特殊化版本
二分查找:双指针的特殊化版本算法解释二分查找常称为二分法或折半查找,每次查找时通过将待查找区间分为俩个部分并通过一个判断的法则来读取一部分的内容继续查找,将查找的复杂度大大降低。将一个长度为O(n)的数组,二分查找的时间复杂度时O(log(n))注意事项一定一定一定要注意区间的闭合关系,确定是左闭右开还是左开右闭还是别的法则,注意c++中的lower_bound和upper_bound函数。具体的实例leetcode 34给定一个按照升序排列的整数数组 nums,和一个目标值 target。找原创 2021-04-15 22:37:26 · 119 阅读 · 0 评论 -
双指针及其延伸问题汇总
第二部分:双指针及其延伸问题汇总1、主要涉及的一些思想(1)双指针主要是用于遍历数组,二叉树,甚至是图等结构,两个指针指向不同的元素,协同完成任务,当然也可以延伸到多指针的使用。(2)当两个指针指向同一个数组,遍历方向相同且不会相交,移动的速度相同,也就是说这两个指针的相对位置不会发生改变,这也就是滑动窗口问题。(3)两个指针指向同一个数组,遍历方向相同,但是移动的速度不同,这也就是快慢指针问题,可以快速找到链表的中点,三分点等等分点(4)两个指针指向同一个数组但是方向相反,这样的问题一般针对的都原创 2021-04-15 09:26:44 · 102 阅读 · 0 评论