树里的 divide and conquer 感觉和 post order traversal 就是一个东西,反正都是递归。 下面方法返回了 root ,也可以不返回,直接用 flatten 自己递归也行。 时间复杂度 O(nlogn) 空间复杂度 O(h) ...
分类:
其他好文 时间:
2018-08-26 01:10:35
阅读次数:
121
介绍: 是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。 Floyd-Warshall算法的时间复杂度是O(N3),空间复杂度O(N2)。 原理: Floyd-Warshall算法的原理是动态规划。 用fk(i,j ...
分类:
其他好文 时间:
2018-08-26 00:09:22
阅读次数:
187
和 148. Sort List 一样的思路,需要把链表一分为二,利用快慢指针即可。 需要注意的是,写完一定要 两个节点 三个节点 代入几个 test case 检查一下,非常容易出错。下面做法是把最后slow的位置作为 root,递归左半边和右半边。 时间复杂度 O(nlogn) 空间复杂度 O( ...
分类:
其他好文 时间:
2018-08-26 00:03:13
阅读次数:
128
http://blog.csdn.net/gane_cheng/article/details/52652705 http://www.ganecheng.tech/blog/52652705.html (浏览效果更好) 排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进 ...
分类:
编程语言 时间:
2018-08-25 21:15:43
阅读次数:
229
236. Lowest Common Ancestor of a Binary Tree 递归寻找p或q,如果找到,层层向上返回,知道 root 左边和右边都不为NULL:if (left!=NULL && right!=NULL) return root; 时间复杂度 O(n),空间复杂度 O(H ...
分类:
其他好文 时间:
2018-08-25 11:43:20
阅读次数:
122
二叉查找树的套路一般都是 先根据 root->val 和一些条件缩小范围。 本题中,如果 根节点小于L,递归右子树,如果大于R,递归左子树。如果在两者之间,表明root一定是符合要求的,递归左子树和右子树,并和root接起来。 时间复杂度 O(n),最多访问每个节点一次。 空间复杂度 O(h) 递归 ...
分类:
其他好文 时间:
2018-08-25 11:35:43
阅读次数:
137
请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? # Definition for singly-linked list. # cla ...
分类:
其他好文 时间:
2018-08-24 10:57:01
阅读次数:
117
Balanced Lineup ST表的裸题 ST采用倍增和动态规划的思想解决 RMQ问题 初始化:空间复杂度O(nlogn),时间复杂度O(nlogn) 查询一次 O(1);而且这是常数非常小的O(1),而不是像线段树这种毒瘤数据结构(常数非常大) 最近做一道题,ST表和线段树如果算时间复杂度都能 ...
分类:
其他好文 时间:
2018-08-23 23:10:15
阅读次数:
180
描述:给一个字符串s,查找它的最长的回文子串。s的长度不超过1000。 ...
分类:
其他好文 时间:
2018-08-23 19:19:25
阅读次数:
185
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。 按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2 ...
分类:
编程语言 时间:
2018-08-23 15:43:14
阅读次数:
222