摘要:
JAVA: public final boolean escapeGhosts(int[][] ghosts, int[] target) { int shortest = shortest(new int[]{0, 0}, target); for (int[] ghost : ghosts) { 阅读全文
摘要:
JAVA 双向链表实现: class MyLinkedList { private Node begin; private Node end; private int len; private class Node { int val; Node next; Node pre; Node(int v 阅读全文
摘要:
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 阅读全文
摘要:
package Demo.qd; import com.itextpdf.awt.geom.Rectangle2D.Float; import com.itextpdf.text.pdf.PdfDictionary; import com.itextpdf.text.pdf.PdfName; imp 阅读全文