摘要:
Bitwise AND of Numbers Range 实现范围内的按位与 思路:首先将m与n做按位与得到tmp。对于tmp中为0的位,则最终结果也一定为0;对于tmp中为1的位,则要看m到n中间有没有数的这一位为0,方法是:将m的这一位及其低位全部置1得到数a,如果a<n,则说明m到n中间存在这 阅读全文
摘要:
Substring with Concatenation of All Words 寻找所有词连接的子串 思路:由于该字串是所有词典中的词连接的,所以该字串长度固定。因此本题可以看作一个滑动窗口的题。为了去除重复工作,每次滑动一个单词的长度,因此起始位置就有n种(n为单词长度)。每种起始位置的滑动策 阅读全文
摘要:
Best Time to Buy and Sell Stock 只能买1次的股票问题 思路:遍历数组的同时,记录到当前天为止的历史最低价格,那么在当前天卖出的最大收益就是当前价格减去历史最低价格,同时更新历史最大收益。 1 public class Solution { 2 public int m 阅读全文
摘要:
Copy List with Random Pointers 复制带随机指针的链表 思路1:使用哈希表,需要消耗O(N)的额外空间。 1 public class Solution { 2 /** 3 * @param head: The head of linked list with a ran 阅读全文
摘要:
1. 图论算法(用BFS,DFS) 拓扑排序 克隆图 找连通块 六度问题 2.BFS 队列实现; 树中的BFS与图中的BFS有什么不同?树中没有环,图中有环需要一个set来记录搜索过的节点; 应用:图的遍历,最短路径 3 搜索 碰到找所有解决方案的题,一定是DFS搜索。搜索题的套路比较固定。 阅读全文
摘要:
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 思路:这道题暴力解法的时间复杂度是 阅读全文