10 2016 档案
摘要:Count Complete Tree Nodes 完全二叉树的节点数 思路:这道题使用暴力法为O(n)会超时。使用二分的思想,首先求出左右子树的深度,如果它们的深度相同,则说明左子树为满树,它的节点数可由公式2^h-1求得;如果不相同,说明右子树为满树,同样可用公式求得它的节点数。然后再递归的去求
阅读全文
摘要:Arithmetic Slices 算术片的个数 思路(最优解):序列型dp。每次记录一下以当前数为末尾的算术片的最大长度以及数的等差值。下一次就能求出算术片增加的个数。使用滚动指针来优化。时间复杂度O(n),空间复杂度O(1)。 1 public class Solution { 2 public
阅读全文
摘要:Additive Number 加法数 思路:一开始以为要用DP来做,但是这道题除非能保证每个相加数的划分是唯一的(事实上不是唯一的),否则只能用搜索。 1 public class Solution { 2 public boolean isAdditiveNumber(String num) {
阅读全文
摘要:Animal Shelter 宠物收养所 思路:要使各项操作都为O(1),应该使用linkedHashMap(插入查找删除都是O(1),还记录了顺序关系)及两个队列。 public class AnimalShelter { ListNode head; ListNode tail; Queue<I
阅读全文
摘要:1.栈和队列 队列:BFS 栈:DFS 例题: (1)min stack: 思路:使用两个栈实现。第二个栈对应相应层为栈顶的最小值。 更节省空间的方法是:相邻层如果值相同可用计数的机制来节省空间。 (2)Largest Rectangle in Histogram 思路:这道题暴力解法的时间复杂度是
阅读全文
摘要:1.subArray问题 碰到subArray就想到先转化成前缀和数组,在求解对应问题。 2. two sum a.哈希表的方法:要想明白如何处理数组中两个相同的数相加等于target的情况。 b.掌握two pointers 方法 3.two pointers 应用的问题: two sum及其fo
阅读全文
摘要:1.什么时候使用dummy node: 当所返回的链表的头不确定的时候使用。 2.链表基本功(链表的题型通常都是分步骤地对链表进行基本操作): a.链表中插入一个节点 b.链表中删除一个节点 c.链表reverse,代码如下: d.merge两个排序链表 e.找链表的中点(快慢指针的方法) 3.题目
阅读全文

浙公网安备 33010602011771号