02 2021 档案
摘要:寻找问题的递归结构有时很简单,有时又很难。以本题来说,绝对不属于简单的行列。 问题的规模不是由单一的字符串长度决定,而是由两个字符串的长度共同决定。那么子问题的分割将由按长度的顺延变为两个字符串所有可能长度的笛卡尔积。 子问题的数量和组合多到让人很难理清问题与子问题之间的关系。 这种情况下,可以将目
阅读全文
摘要:JAVA 递归描述: int re = 0; public final int longestMountain(int[] arr) { if (arr.length < 3) return 0; longest(arr, 1, 0, 0); return re == 0 ? re : re + 1
阅读全文
摘要: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
阅读全文