摘要:
JAVA 暴力解法: public final int networkDelayTime(int[][] times, int n, int k) { Map<Integer, List<Integer[]>> map = new HashMap<Integer, List<Integer[]>>( 阅读全文
摘要:
字典树实现,JAVA: class MagicDictionary { Node root; /** * Initialize your data structure here. */ public MagicDictionary() { } public void buildDict(String 阅读全文
摘要:
提前验证抽象的正确性,尤其是边界问题在抽象中是否可以被很好的解决。然后以抽象的角度去考虑问题,简化问题。 比如双指针,提前验证可以使用双指针方法后,只需要考虑区间何时退出以及退出时的逻辑即可。 双指针原地压缩算法 JAVA: public final int compress(char[] char 阅读全文
摘要:
暴力解法很容易,JAVA 暴力解法: public final ListNode mergeKLists(ListNode[] lists) { ListNode head = new ListNode(0); ListNode node = head; while (true) { int min 阅读全文
摘要:
多种解题方式,位计数感觉最精彩。 JAVA Hash表: public final int findDuplicate(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for (int i = 0; i < nums.length; 阅读全文
摘要:
相比起暴力解法,前缀树可以实现空间换时间。将多个 small 构建为一棵前缀树,在树上遍历一次 big 。可替代用每个 small 与 big 比对。 JAVA: private class Trie { boolean isEnd; Trie[] childs; int num; int flag 阅读全文
摘要:
JAVA 暴力解法,这一步是比较难的,该思路我称之为左右逢源。视角放在局部,每个元素对应的结果与左右所有元素相关: public final int trap(int[] height) { int re = 0, len = height.length; for (int i = 1; i < l 阅读全文