数据结构与算法
朝阳映木
笨笨的企鹅w
展开
-
图系列(四)欧拉通路与欧拉回路
欧拉通路与欧拉回路之前,写了图系列一二三,现在出四啦!这也意味着,对于图的部分,可以说50%以上常用的内容就已经过了一遍了。欧拉路的部分会稍微难一点,主要是我们要和定义打交道了。至于其他图的理论,我感觉比较有用的就不剩下多少了。可能就还有同构什么的,还会有一些探讨的空间。好长一段时间没有写东西啦!这篇文章,大致会经过几次修改完成。主要参考了Leetcode的这道题——重新安排行程。其实,这道题目,用图一二三的方法也能解决,但是非常复杂,我花了很长时间。定义下面这段话,请同学们略过。我真是越原创 2020-09-09 10:48:33 · 1874 阅读 · 0 评论 -
备忘 - 组合与排列的算法实现
组合我的处理方式主要是通过递归方式进行遍历。同时利用boolean[]数组,来判断某个数字有没有被用过。辅助以Stack,进行数据的存储,注意Stack可以是正常的Stack类,也可以是一般的数组。public void iteratePermutation(int n, int k) {// P(n, k) boolean[] used = new boolean[n]; int[] permutation = new int[k]; for (int i = 0 ; i原创 2020-09-08 12:11:20 · 176 阅读 · 0 评论 -
回文 - 回文的性质
回文的性质以前,一看到回文这两个字我就头大。记得有一次去面试的时候,我看到回文,脑子一片空白(PS: 菜的呀 TvT )。前两天松鼠做了回文的问题,他说其实掌握了回文的性质其实还好。我一听,对!问题的关键在于要先把性质梳理一下,之后很多问题就迎刃而解了!接下来,我们就一步步来吧!回文定义 - Palindrome一个数字或者字符串正读/反读都一样,例如,1221,123454321,“abcdcba”等等。首先,给大家一个判断String是否为回文的算法。public boolean原创 2020-08-09 17:12:56 · 2872 阅读 · 0 评论 -
随机——随机取点
随机取点这两天做了LeetCode上面关于Random的系列问题,虽然问题不多,但是能提供解决随机问题的经典思路——按权重采样和拒绝采样。我们这里只是讨论关于随机去点的基本问题,后面没时间的话,可能不会深究。Java Random API首先,当然是最经典的Math.random(); 返回[0,1)的一个double值,区间内任意一个点被取到的概率都是等可能的。double x...原创 2020-02-05 11:10:50 · 1101 阅读 · 0 评论 -
树(一)树的遍历
树的遍历近期参加复旦互联网协会的刷题营,所以我勉勉强强又开始做题啦。现在变得更务实啦,要想提升能力,超过别人就是要依靠一项项的指标的胜利,这样的评价是更加客观的。想要提升能力,一方面要靠平时的积累,另外一方面也要依靠瓶颈期的奋力一搏。当然,我的意思是更加侧重前者的。话不多说啦,开始今天的话题——树的遍历。如果用递归的方法是非常简单,也是非常推荐的。但是,用迭代的方法也不难!!!所以我决定在这里...原创 2020-01-31 12:19:02 · 393 阅读 · 0 评论 -
堆(二)优先队列
优先队列使用最大堆或者最小堆来实现一个优先队列是非常合适的。这个优先队列需要实现插入新值、改变键值和抽取最大/最小元素的功能。实现如下:package heap;public class PriorityQueue <T extends Heap> { private T heap; public PriorityQueue(T heap) { ...原创 2019-09-06 11:22:30 · 144 阅读 · 0 评论 -
堆(一)最大堆和最小堆的实现
最大堆和最小堆的实现这一讲讲的还是堆,因此将它归入到堆(一)中。这一篇博客的目的非常简单,就是补充一下,堆的实现代码。Heap是抽象类,它有两个子类,MaxHeap和MinHeap。至于它们的function,我不再赘述了,请看堆(一)堆排序。HeapHeap,代码如下,它是一个抽象的父类。其实只有两个方法,buildHeap和heapify。其中,heapify方法由子类重写,如果我...原创 2019-09-05 21:40:01 · 1181 阅读 · 0 评论 -
堆(一)堆排序
堆堆主要应用于维护一个优先队列,当然还有进行堆排序。堆的部分将会分为三个部分来讲,分别是堆排序,优先队列的实现和斐波那契堆,从易到难。本文大部分参考了《算法导论》第六章的内容。堆基础操作和性质二叉堆实际上是用数组实现的,如下图所示(图参考了《算法导论》,使用0-index)。这个是最大堆,最大的元素在堆的顶上。接下来将用list指代下面的数组。将它化成堆,也就是从root开始,...原创 2019-09-04 22:29:10 · 137 阅读 · 0 评论 -
对所有排序算法的总结
对所有排序算法的总结算法复杂度与稳定性良心总结,如下图所示:排序算法的选择完善中。。。原创 2019-08-30 14:17:15 · 115 阅读 · 0 评论