java
文章平均质量分 51
dztom
这个作者很懒,什么都没留下…
展开
-
拓扑排序(kahn算法和dfs算法)
拓扑排序(两种算法)原创 2022-11-27 10:48:50 · 681 阅读 · 1 评论 -
图的创建(五种创建方式)
图的创建,五种创建方式原创 2022-11-20 22:40:49 · 2125 阅读 · 0 评论 -
关于树的反序列化
一道题引起对树的反序列的反思原创 2022-11-05 00:03:26 · 156 阅读 · 1 评论 -
最大子数组问题(动态规划)
最大子数组问题可以通过动态规划将时间复杂度做到O(N),也是之前的算法导论4.1-5问题动态规划问题上文的分治思想,实际上是根据问题性质将其分解为小规模问题,之后逐步求解小问题得出结果,再利用这些结果得出原问题的解。动态规划实际上也是这种思想,当问题具备重叠子问题,最优子结构的性质时,往往可通过此法得出答案。对于最大子数组问题,采用dp数组解决定义:dp[i]i 为数组索引,是为“状态”,dp[i]为以索引i为终点的数组的前i+1个值的最大子数组和考虑dp[i] 与 dp[i-1]的关系,是否原创 2021-08-28 22:56:44 · 2865 阅读 · 1 评论 -
最大子数组问题(递归)(java)
最大子数组问题(递归)作为分治策略的典型应用,时间复杂度可达到O(nlgn),与归并排序相同。分治策略应用三种步骤:分解:将问题分解成子问题,子问题的形式跟原问题一样,但规模更小,如果所解决的问题不能够分解,则分治也无从谈起。解决:不断递归,子问题被分解为更小规模的子问题,直到递归“触底”,这解决该问题,即停止递归,递归开始“上升”。归并:将各子问题的解合成其父问题的解以问题“最大子数组”为例:分解:将数组“均匀”分为两半,原问题即分解为:1:找出左半边数组的子数组的最大值2:找出右半边数原创 2021-06-27 18:02:13 · 549 阅读 · 2 评论 -
树的同构(Java实现)
树的同构备忘!定义:给定两棵树r1、r2,如果r1可以通过若干次的左子树和右子树互换,使之与r2完全相同,这说明两者同构。举例树的构造树可以由数组或链表来构造:举例:上图左上角的树通过数组可表示为0123456789101112ABCDEG---F-H-该方式浪费了部分空间,但适合表示完全二叉树链表方式则比较直观除上述两种方式外,还可以采用“类数组”的方式 public static class Node{原创 2021-06-14 19:07:53 · 2291 阅读 · 6 评论