
算法
文章平均质量分 80
程序员麻辣烫
这个作者很懒,什么都没留下…
展开
-
算法系列-链表
**写链表代码是最考验逻辑思维能力的**。因为,链表代码到处都是指针的操作、边界条件的处理,稍有不慎就容易产生 Bug。原创 2022-08-06 22:44:14 · 247 阅读 · 0 评论 -
一道算法题-第二高的薪水
第一次知道乐扣上竟然后又MySQL的算法题。本来以为会很容易,没想到还是有很多小技巧。原创 2022-03-13 20:41:38 · 1061 阅读 · 0 评论 -
一道算法题-搜索二维矩阵
这道题记得在《剑指offer》上有,当时急急忙忙的刷过一次,这次静下心来做,还是有一些新的领悟。原创 2022-02-26 11:33:03 · 142 阅读 · 0 评论 -
一道算法题-验证二叉搜索树
最初看这道题的时候,发现通过率36%,觉得比较神奇,按理说应该是相对简单的题目。结果啪啪打脸,长时间没有做树相关的题目,连这种基础题型都忘记怎么做了。好在经过两次错误尝试后,发现了正常解题方案。原创 2022-02-20 14:08:53 · 513 阅读 · 0 评论 -
一道算法题-时机选择
这是一道贪心算法题,好久没做,都忘记解题流程了。回想了一下,终于回忆起贪心算法的套路原创 2022-02-13 19:14:03 · 98 阅读 · 0 评论 -
一道算法题-被围绕的区域
广度优先和深度优先的题目都比较简单,大家有兴趣的话,可以看一下我的算法总结。被围绕的区域使用广度优先遍历算法进行解题,一次通过。原创 2022-02-05 18:06:43 · 232 阅读 · 0 评论 -
一道算法题-三数之和
这道题蛮有意思的,本以为需要很多奇特的思路,结果按照自己的思路写了一下代码,简单的优化一下,最终通过了。所以说,很多时候就是干,然后就有结果了。原创 2022-01-31 17:38:21 · 1300 阅读 · 0 评论 -
一道算法题-二叉树的中序遍历
二叉树中序遍历,如果用递归来做的话,有水题的嫌疑。不过好久没做过二叉树的题目了,用来练练手也是可以的。原创 2022-01-31 17:35:40 · 1011 阅读 · 0 评论 -
一道算法题-两数相除
最近工作上的事情比较多,一直没有时间做题。趁着间隙,赶紧补一下。两数相除虽然中等难度,但涉及很多细节和基础知识,值得好好分析一下。其中一些思路,如果没有相关知识,很难解出该题。原创 2022-01-15 14:52:24 · 379 阅读 · 0 评论 -
一道算法题-电话号码的字母组合
在分类上,这是一道哈希表的题,但在真正实现过程中,这是一道深度优先题啊。原创 2022-01-02 00:06:22 · 125 阅读 · 0 评论 -
一道算法题-跳跃游戏 II
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。原创 2021-12-26 19:56:33 · 3095 阅读 · 2 评论 -
一道算法题-括号生成
最近看到一些年长的程序员在面试的时候,算法能力并不是很好。虽然随着职位的提升,写代码的时间减少,架构的时间增多,但代码能力不能丢原创 2021-12-19 12:25:05 · 561 阅读 · 0 评论 -
找工作必做事项-剑指offer
自从上次重新学习了一下算法后,写了一篇总结的文章: 算法总结,写完之后总想去检验一下自己的水平如何。记得毕业前找工作的时候,用C++刷了一遍剑指offer,都写在网易博客上http://wuhenpzq.blog.163.com/blog, 如今再看,网易博客已经关闭了,好在自己还能查看。当时刷题,更偏向于背题,不是基于对算法有足够的理解而解题的。所以这次打算用Go再刷一遍剑指offer,看看自己是否真的提升了,同时也好比较一下C++和Go写算法题的区别。刷完之后,发现对于大部分题,先确定使用哪种算法原创 2021-03-13 22:49:34 · 631 阅读 · 0 评论 -
算法总结
感想历经两个月的时间,将算法知识重新梳理完成,整个过程挺累的,每天只能晚上或者周六周日梳理一部分,虽然占用了大量的休息时间,不过整个过程很充实,而且也重新学到了不少东西。其实以前自己的算法还是挺不错的,只不过工作之后忙于业务,把算法方面的东西给放下了,当然了,不止算法,很多其他的知识也没再去整理。前些日子看完左耳听风后,有很多感触,计算机本就是我所热爱的工作,像这种基础性的知识一定要经常复习。而且经过这次整理,我发现两点系统性整理知识点受益颇深至少每周都要找时间刷一下算法题,这能锻炼自己的思维,原创 2020-10-24 15:56:56 · 440 阅读 · 0 评论 -
算法-分支限界法
回溯法是深度优先策略遍历问题的解空间树。分支限界法按广度优先策略遍历问题的解空间树,在遍历过程中对已经处理的每一个节点根据衔接函数估算目标函数的可能取值,从中选取使目标函数取得极值(极大或极小)的节点优先进行广度优先搜索,从而不断调整搜索方向,尽快找到问题的解。概述解空间树的动态搜索分支限界法首先确定一个合理的限界函数,并根据限界函数确定目标函数的界[down,up],然后,按照广度优先策略遍历问题的解空间树,在分支节点上,一次搜索该节点的所有孩子节点,分别估算这些孩子节点的目标函数的可能取值,如果某原创 2020-10-24 15:49:46 · 19307 阅读 · 7 评论 -
算法-回溯法
回溯法就是一种有组织的系统化搜索技术,可以看作是蛮力法穷举搜索的改进。回溯法每次只构造可能解的一部分,然后评估这个部分解,如果这个部分解有可能导致一个完整解,则对其进一步构造,否则,就不必继续构造这个部分解了。回溯法常常可以避免搜索所有的可能解,所以,它适用于求解组合数量较大的问题。概述问题的解空间复杂问题常常有很多的可能解,这些可能解构成了问题的解空间。解空间也就是进行穷举的搜索空间,所以,解空间中应该包括所有的可能解。为了用回溯法求解一个具有n个输入的问题,一般情况下,将其可能解表示为满足某个原创 2020-10-15 20:23:58 · 3541 阅读 · 2 评论 -
算法-贪心法
贪心法是把一个复杂问题分解为一系列较为简单的局部最优选择,每一步选择都是对当前解的一个扩展,直到获得问题的完整解。贪心法的典型应用是求解最优化问题,而且对许多问题都能得到整体最优解,即使不能得到整体最优解,通常也是最优解的很好近似。概述贪心法的设计思路贪心法目光短浅,并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优,这种局部最优选择并不总能获得整体最优解,但通常能获得近似最优解。用贪心法求解的问题一般有两个最重要的性质:最优子结构性质和贪心选择性质。1)最优子结构性质:当一个问题的最原创 2020-10-08 22:24:56 · 3720 阅读 · 0 评论 -
算法-动态规划法
动态规划是在20世纪50年代由美国数学家贝尔曼为研究最优控制问题而提出的,当该方法在应用数学中的价值被大家认同以后,在计算机学界,动态规划法成为一种通用的算法设计技术用来求解多阶段决策最优化问题。所以,同学们,大家觉得特别难的动态规划问题是人家1950年想出来的,据目前已经有70年了。另外,有些同学也不要问计算机能不能改变世界了好吗?写CRUD确实挺难改变世界的,但是如果能想出如动态规划、Paxos、Raft等,或者能将数学上已经有的内容转化为计算机,都是很有贡献的!!!动态规划法是将待求解问题分解成若原创 2020-10-05 16:12:08 · 3408 阅读 · 4 评论 -
算法-减治法
分治法和减治法的区别。分治法是把一个大问题划分为若干个子问题,分别求解各个子问题,然后再把子问题的解进行合并得到原问题的解。减治法同样是把一个大问题划分为若干个子问题,但是这些子问题不需要分别求解,只需求解其中的一个子问题,因而也无需对子问题的解进行合并。所以,严格的说,减治法应该是一种退化了的分治法,时间复杂性一般是O(log2 n)。减治法在将原问题分解为若干个子问题后,利用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系,这种关系通常表现为:(1)原问题的解只存在于其中原创 2020-09-19 13:37:28 · 4406 阅读 · 0 评论 -
算法-分治法
分治法将一个难以直接解决的大问题划分成一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解。概述设计思想大问题划分成一些规模较小的子问题,以便各个击破,分而治之最好使子问题的规模大小相等最好使各子问题之间相互独立。如果子问题不独立,分治法需要重复的求解公共的子问题,此时虽然也可以用分治法,但一般用动态规划法较好求解过程划分:即分治,划分为小问题求解子问题:一般用递归的方法求解各个子问题,有时递归也可以用循环来实现合并:把各个子问题的解合并起来递归分治与递归原创 2020-09-07 13:40:18 · 2192 阅读 · 0 评论 -
算法-蛮力法
蛮力法的主要思想就是用最简单的思路解决问题,一般性能不好,但仍然很重要。理论上蛮力法可以解决可计算领域的各种问题蛮力法解决较小规模问题是可接受的,如果设计一个更高效算法代价不值得蛮力法可以作为时间性能的底线,来衡量更高效的算法查找问题中的蛮力法顺序查找按照顺序进行查找,一般可以对算法进行适当优化,如设置哨兵等,能够改进时间性能,但只能减少系数,而数量级不会改变。两数之和 - 简单 代码剑指 Offer 53 - II. 0~n-1中缺失的数字 - 简单 代码串匹配问题串匹配定义原创 2020-08-30 14:36:55 · 4144 阅读 · 0 评论 -
算法学习计划
学习计划根据王红梅编著的《算法设计与分析》,读取每一章的内容,然后从乐扣上找对应的算法题,包含简单-中等-困难三种程度。尽量每两周能够完成一章。遇到一种类型的问题时,先自己想想解决方案,然后再看标准答案。所有章节为:蛮力法分治法减治法动态规划法贪心法回溯法分支限界法概率算法近似算法代码用go实现,写到asap中,github仓库位置https://github.com/shidawuhen/asap。这样的好处是即能够学习基础知识,又能够进行实践,加深记忆。实现完一遍后,如果原创 2020-08-30 14:35:18 · 2189 阅读 · 0 评论