手写算法
Wesley@
这个作者很懒,什么都没留下…
展开
-
经过千锤百炼的算法模版
起始语平时写算法的时候,很多时候思路有了,但是边界问题总是傻傻搞不清楚。所以找了一些经过千锤百炼的模版来帮助代码。持续更新中。。。方便自己在通勤路上,记忆一下模版,所以发在了博客上。算法基础排序快速排序把每个比基准值大的值放到右边,比基准值小的值放到左边,再分别左右快速排序void quick_sort(int q[], int l, int r) { if (l >= r) return; int x = q[l], i = l - 1, j = r + 1; //这里基准原创 2021-06-17 21:21:07 · 296 阅读 · 0 评论 -
计算表达式(中缀转后缀表达式,逆波兰式结果计算)
前缀,中缀,后缀表达式(逆波兰表达式)参考: https://www.cnblogs.com/chensongxian/p/7059802.html中缀表达式中缀表达式就是常见的运算表达式,如 (3 + 4) * 5 - 6前缀表达式介绍前缀表达式又称为波兰式,前缀表达式的运算符位于操作数之前比如: - * + 3 4 5 6前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符弹出栈顶的两个数字,并进行运算,将结果压入堆栈。重复上述过程,直到最后的一个数字,即为原创 2021-05-26 21:40:10 · 288 阅读 · 0 评论 -
手写 BST 二叉查找树
思路之前一直觉得二叉查找树写起来比较麻烦,主要是添加删除元素比较复杂抽象,这次写了一下其实还好。删除某个元素,只需要把右子树中最小节点和待删除元素交换,并删除最后那个字节点。(右子树最小节点刚好比左子树所有节点大,比右子树所有节点小,故符合要求)。这么一思考,代码挺简单的。Codepublic class BST {TreeNode root;TreeNode makeEmpty(TreeNode t) { if (t == null) return null; makeEmpt原创 2021-01-14 09:05:51 · 163 阅读 · 0 评论 -
LeetCode 322. Coin Change
Description:You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the原创 2020-08-02 12:45:20 · 138 阅读 · 0 评论 -
贪心算法(持续更新中)
贪心算法思想贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出的是在某种意义上的局部最优解。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路径问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。活动安排问题问题描述活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某原创 2020-07-29 23:32:54 · 287 阅读 · 0 评论 -
手写基础算法01-排序算法
这个系列主要写常见的基础算法手写实现,代码会附在github上。术语解释1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排序。5、时间复杂度:一个算法执行所消耗的原创 2020-07-26 15:27:37 · 400 阅读 · 0 评论