数据结构
BonjourDurant
UCLA在读研究生,天秤座一枚,未来计划在湾区工作。喜欢研究数据结构和日语,不喜欢吃甜食,最喜欢的歌手是米津玄师。
展开
-
做一只可爱的小猪背包 [Cover 背包九讲]
做一只可爱的小????背包小猪背包是饥荒玩家梦寐以求的背包。我们这次好好研究一下背包问题。推荐观看dd大牛:背包九讲的传送门, 「背包九讲」视频教程0-1 背包完全背包多重背包 I II III混合背包问题二维费用的背包问题分组背包问题背包问题求解方案数求背包问题的方案有依赖的背包问题I. 0-1背包问题注意解空间极大问题有时可以转化0-1背包,从而避免TLE!题目:有一个容量为 V 的背包,和一些物品。这些物品分别有两个属性,体积 w 和价值 v原创 2020-09-13 11:35:01 · 607 阅读 · 0 评论 -
图的几种表示方法
图的几种表示方法1.邻接矩阵表示法如图:也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有元素中,只有少量为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络中查找弧的时间。同样,对于网络中的权,也可以用类似邻接矩阵的 矩阵表示。只是此时一条弧所对应的元素不再是1,而是相应的权而已。如果网络中每条弧赋有多种权,则可以用多个矩阵表示这些权。2. 关联矩阵表示法也就是说,在关联矩阵中,每行对应于原创 2020-09-08 21:20:45 · 2718 阅读 · 0 评论 -
数据结构の学习记录(进阶篇3):探密红黑树
和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍。原创 2020-05-14 20:50:21 · 1784 阅读 · 0 评论 -
数据结构の学习记录(进阶篇2):20余张图带你详尽领略AVL树的美
本文阅读大概需要45分钟,独立编程需要两天,建议预留充足的时间和咖啡。学树的顺序,一般来说是:二叉树->二叉查找树->AVL树->2-3-4树->红黑树。它们的难度依次递增。不得不说的是,树是计算机科学最重要研究课题之一。在算法类面试当中,树的考察也是不可或缺的。先简单回顾一下二叉查找树:一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树...原创 2020-04-29 14:34:45 · 433 阅读 · 0 评论 -
数据结构の学习记录(进阶篇1):什么是二叉查找树
对算法类的问题,最大的忌讳就是,想都不想直接写代码。如果你的这样的程序猿,那么狠抱歉,要么就是你会花上数十倍的时间修改你的简单STUPID错误,要么就是你很短时间就能得到正确的结果,如果是这样那么恭喜你,你进化了!说上述言论,笔者的区分点是你的目标究竟是一个码农还是一个算法工程师。两者的区别从工资上看不说你应该也懂:-)(等不及的你可以迅速下拉到分界线以下寻找干货)下面附上笔者的c...原创 2020-04-25 22:42:44 · 177 阅读 · 0 评论 -
数据结构の学习(五):将中缀表达式转换为后缀表达式及求值
(1)给表达式加括号(2)创建解析树表达式(3)树的后序遍历,生成后缀表达式(4)后缀表达式求值。经过前面几个步骤的洗礼,相信你内心充满了喜悦和兴趣。现在我们只需要将后缀表达式计算输出即可,然而可怕的是:-$不借助树我们也能轻松实现上述过程。这种方法便是逆波兰表示法(Reverse Polish Network)。我们将着重介绍这一神奇的方法。不幸的是,笔者的博客将不会有完整代码(示范代码...原创 2020-04-19 22:36:52 · 777 阅读 · 0 评论 -
数据结构の学习(四):二叉树的可视化遍历
笔者学习树的路线图是这样的。首先是树和节点的类定义,其次是用turtle实现了树的可视化,然后简单测试之后就进入到树的应用部分。一个经典的问题是利用树来计算表达式。按照工程化的思维,步骤应该是这样的:(1)给表达式加括号(2)创建解析树表达式(3)树的后序遍历,生成后缀表达式(4)后缀表达式求值。如果你很希望解决一个过程实际问题,那么请你备好笔记本和铅笔,带好小板凳,让我们开始吧!如果...原创 2020-04-18 22:44:51 · 1404 阅读 · 0 评论 -
数据结构の学习(三):表达式解析树的建立
对算法类的问题,最大的忌讳就是,想都不想直接写代码。如果你的这样的程序猿,那么狠抱歉,要么就是你会花上数十倍的时间修改你的简单STUPID错误,要么就是你很短时间就能得到正确的结果,如果是这样那么恭喜你,你进化了!说上述言论,笔者的区分点是你的目标究竟是一个码农还是一个算法工程师。两者的区别从工资上看不说你应该也懂:-)(等不及的你可以迅速下拉到分界线以下寻找干货)下面附上笔者的c...原创 2020-04-15 21:24:37 · 943 阅读 · 0 评论 -
数据结构の学习(一):可视化一棵二叉树
学习树的时候,我们有一个最大的疑惑,就是如何可视化一颗二叉树。因为你总不可能指望永远在嵌套列表中看出一颗树出来。我们希望更直观一些,就像上面那副图一样,简单漂亮。这正是笔者在学习树开始时干的第一件事。不幸的是,笔者的博客将不会有完整代码(示范代码除外),所有代码均已上传到码云上。如果时间和精力允许的话,强烈建议你根据思路,手动写一遍,相信你会感觉到全身毛孔舒张而不是想砸电脑的快感。很...原创 2020-04-09 15:08:07 · 1588 阅读 · 1 评论 -
LeetCode刷题记录No.10-自己实现正则表达式.*
给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:s原创 2020-03-17 21:45:08 · 131 阅读 · 0 评论