随笔分类 -  数据结构

摘要:之前一直在复习树的相关知识,后来在leetcode中做了八道题目,这些题目不像之前二分查找一样有很多的细节,更多的只是看你的解题思路和树的基础操作,还有就是对递归的掌握程度。这八道题目总共可以分为三类,一类就是对一般树进行操作,主要就是提出一些要求,让你实现,第二类就是对树进行不同的方式遍历,第三就 阅读全文
posted @ 2020-07-29 09:18 长安不乱 阅读(246) 评论(0) 推荐(0)
摘要:树:基本树形 树拓展了那些一维顺序结构(链表,栈,队列等),链表的插入删除速度快,但是查找速度慢,数组查找速度快,但是插入删除速度慢,为了能够插入、删除、遍历、查找速度相对较快,就使用了树结构。树多用与查找和索引,比如内存管理中的堆heap就是一个不存储边的完全二叉树。本文不对树的定义进行阐述,这些 阅读全文
posted @ 2020-07-27 14:42 长安不乱 阅读(671) 评论(0) 推荐(0)
摘要:树的遍历也一直都是重点,主要是在建造了一棵树之后,如何将这棵树输出来确定创建的树是否正确就成了问题。网上现在也有很多的方法来输出树,python也有专门的包来可视化,不过今天主要总结最基础的遍历算法。 树的遍历主要根据访问根节点的时机来分为先序、中序、后序和层次遍历。其中要掌握了十种算法,分别是先序 阅读全文
posted @ 2020-07-21 15:44 长安不乱 阅读(2087) 评论(0) 推荐(0)
摘要:字符串匹配就是查找子串是否在主串中,或者在主串的哪个位置上。一般而言,使用暴力破解,将子串与主串一一对比就可以找到结果,但是这样的复杂程度太高,比如主串是aaaaaaaaaaaac,子串是aaaac,过程就是主串的第一个a和子串的第一个a对比,相同,对比第二个,一直到主串的第五个a和子串最后的c对比 阅读全文
posted @ 2020-07-18 15:22 长安不乱 阅读(513) 评论(0) 推荐(0)
摘要:散列表(Hash),又名哈希,java中的HashMap,python中的dict,在一般代码中多用于键值对字典存储中。在查找中,哈希表的查找往往都是$Olog(1)$,这说明哈希表的查找往往并不需要什么循环结构,是直接得出来的,那么其中必然有值和存储位置的对应计算方法,在哈希表中被叫做散列函数。有 阅读全文
posted @ 2020-07-06 15:36 长安不乱 阅读(456) 评论(0) 推荐(0)
摘要:之前在数据结构搜索那章说过,折半(二分)一般适用于有序列表的查找,但是在写的时候需要注意算法的细节。我在leetcode上总共写了八道应用了二分算法的题目,从中总结一下写二分算法需要注意什么样的细节,本文全部的代码都放在我的github。 ##一般二分查找 leetcode,第704题,binary 阅读全文
posted @ 2020-07-04 16:54 长安不乱 阅读(457) 评论(0) 推荐(1)
摘要:在数据结构中,查找是一大知识点,并且在最近的leetcode刷题的时候,也会经常遇到这种查找的问题,比如子串查找这类问题。查找的方式有很多,这篇主要是记录一下查找中最简单也是最常用的线性结构的查找方式,主要分为三种,顺序查找、折半查找、分块查找。 顺序查找 顺序查找,最简单的查找方式,也是我们惯有的 阅读全文
posted @ 2020-07-02 08:47 长安不乱 阅读(235) 评论(0) 推荐(0)