题解 先序遍历树1,判断树1以每个节点为根的子树是否包含树2的拓扑结构。 时间复杂度:O(M N) 注意区分判断总体包含关系、和判断子树是否包含树2的函数。 代码 ...
分类:
其他好文 时间:
2019-06-13 00:56:06
阅读次数:
130
题解 法一:后序遍历。搞清返回值逻辑。 todo 更新别的方法 法一代码 ...
分类:
其他好文 时间:
2019-06-13 00:31:45
阅读次数:
81
题意 把链表分成左右半区,奇数个节点则右半区长一点,重新交叉排列成链表,如下例: 1,2,3,4,5, = 1,3,2,4,5, 1,2,3,4, = 1,3,2,4, 题解 找到分割点,拆开再合并。 代码 ...
分类:
其他好文 时间:
2019-06-02 01:22:37
阅读次数:
93
题意 给定非递减循环链表的头节点,和一个待插入的值,将其插入循环链表。 题解 遍历一遍,找到插入位置则返回;若没找到,说明插到头节点尾节点间,注意区分插入的是最大值还是最小值,返回的头节点不一样。 代码 public class Main { public static void main(Stri ...
分类:
其他好文 时间:
2019-06-02 00:54:48
阅读次数:
112
题意 给定一个无序单链表的头节点head,实现单链表的选择排序。 题解 按选择排序方法:每次从原链表找出最小值,从原链表删除,插入新的有序链表。 时间复杂度O(n^2) 额外空间复杂度O(1) 代码 public class Main { public static void main(String ...
分类:
编程语言 时间:
2019-05-31 23:43:19
阅读次数:
150
题意 如题 题解 使用HashSet。 时间复杂度O(n),额外空间复杂度O(n)。 todo 使用选择排序也可以做。 代码 ...
分类:
其他好文 时间:
2019-05-31 23:15:58
阅读次数:
117
题目 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。 例子 arr=[1,2,100,4]。 开始时玩家A只能拿走1或4。如果玩家A拿走1, ...
分类:
其他好文 时间:
2019-05-31 00:44:26
阅读次数:
127
题意 给定一个整形数组arr,返回排序后的相邻两数的最大差值。 题解 借助桶排序思想。 首先遍历一遍获得最大值max,最小值min。 设数组长度为len,则有len+1个桶,桶负责的区间大小是(max min)/len,数字num放入的桶id是(num min)/((max min)/len)即(n ...
分类:
编程语言 时间:
2019-05-30 01:43:01
阅读次数:
102
题目 补充问题:数组只含0,1,2,对数组排序,要求时间复杂度O(n),额外空间复杂度O(1) 题解 维护三个变量,l,idx,r。左区间[0,l],中间区间[l+1,idx],右区间[idx+1,r]。 初始化l= 1,r=len,idx=0。idx用来遍历数组。 当arr[idx]=1,idx+ ...
分类:
编程语言 时间:
2019-05-24 00:42:31
阅读次数:
130
问题描述 给定数组,输出所有子数组的累积的最大值。 题解 以arr[i]结尾的最大累乘积=max{max arr[i],min arr[i],arr[i]},其中max、mini表示以arr[i 1]结尾的最大累乘积、最小累乘积。 最后再取一个最大值即可。 时间复杂度O(n) 代码 ...
分类:
编程语言 时间:
2019-05-22 23:49:06
阅读次数:
127