06 2022 档案
摘要:依赖 引入 Mockito 和 JUnit 依赖: <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core --> <!-- <dependency> <groupId>org.mockito</groupId> <artif
阅读全文
摘要:/** * 剑指 Offer 26. 树的子结构 * https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/ * */ public class Solution { public boolean isSubStructure(TreeNode A,
阅读全文
摘要:/** * 剑指 Offer 25. 合并两个排序的链表 * https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/ * */ public class Solution { public ListNode me
阅读全文
摘要:双指针 /** * 剑指 Offer 24. 反转链表 * https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/ * * 思路:双指针 * */ public class Solution1 { public ListNode reverseL
阅读全文
摘要:/** * 剑指 Offer 22. 链表中倒数第k个节点 * https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ * * 思路:快慢指针 * */ public class Solution { pu
阅读全文
摘要:/** * 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 * https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ * * 思路:快排思想 * */
阅读全文
摘要:/** * 剑指 Offer 18. 删除链表的节点 * https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/ * * 思路:双指针 * */ public class Solution { public ListNode
阅读全文
摘要:大数问题 /** * 剑指 Offer 17. 打印从1到最大的n位数 * https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/ * * 思路:回溯思想 * 考虑大数问题(用字符串或数组表示大数) * */ pu
阅读全文
摘要:/** * 剑指 Offer 16. 数值的整数次方 * https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/ * * 思路:快速幂 * x^n = x^a * x^b (n=a+b) * 13 = 1101 (十进制转二进制
阅读全文
摘要:位移 /** * 剑指 Offer 15. 二进制中1的个数 * https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/ * * 思路:位移 * */ public class Solution1 { public int ham
阅读全文
摘要:深度优先 /** * 剑指 Offer 13. 机器人的运动范围 * https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/ * * 思路:深度优先 * */ public class Solution1 { private
阅读全文
摘要:/** * 剑指 Offer 12. 矩阵中的路径 * https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/ * * 思路:深度优先搜索 * */ public class Solution { private char[][] bo
阅读全文
摘要:/** * 剑指 Offer 11. 旋转数组的最小数字 * https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/ * * 输入:numbers = [3,4,5,1,2] * 输出:1 * */ public
阅读全文
摘要:动态规划 /** * 剑指 Offer 10- I. 斐波那契数列 * https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/ * 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 * *
阅读全文
摘要:/** * 剑指 Offer 09. 用两个栈实现队列 * https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ * */ public class CQueue { private Deque<Integer>
阅读全文
摘要:/** * 剑指 Offer 07. 重建二叉树 * https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/ * 思路:前序遍历数组的第一个结点是根结点,在中序遍历数组中找到根结点,根结点左边是是左子树的元素,根结点右边是右子树的元素 * 递
阅读全文
摘要:递归 /** * 剑指 Offer 06. 从尾到头打印链表 * 思路:递归或栈 * */ public class Solution { public int[] reversePrint(ListNode head) { return reverse(head, 0, null); } priv
阅读全文
摘要:/** * 剑指 Offer 05. 替换空格 * 思路:如果给定的字符数组能够容纳替换后的字符串,则可以从后开始替换 * */ public class Solution { public String replaceSpace(String s) { // 统计空格数量 int spaces =
阅读全文
摘要:/** * 剑指 Offer 04. 二维数组中的查找 * https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ * 思路:从右上角或左下角开始查找,每次都能排除一行或一列 * */ public class Solut
阅读全文
摘要:HashSet /** * 题目:找出数组中重复的数字。 * https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ * * 利用哈希集合在 O(1) 时间复杂度判断元素是否在集合中 * */ public class S
阅读全文
摘要:建造者模式,别名 Builder 模式、构建者模式、生成器吗模式。 类型:创建型设计模式 解决的问题: 解决构造器参数列表过长问题 解决使用构造器 + setter 方法,无法进行参数依赖关系校验问题 解决使用构造器 + setter 方法,对象存在中间状态问题 解决使用构造器 + setter 方
阅读全文
摘要:总结 程序员的自我修养: 对工作负责(代码逻辑清晰、简洁、可读性、注释、文档、日志、遵循规范) 技术能力(以工作需求为导向、构建知识体系、关注行业新技术、专一) 业务能力(熟悉公司项目/业务、团队协作能力、沟通能力) 管理能力(管理知识、管理思维) 沟通相处 相处:多打招呼(早上好)、多聊聊天 帮忙
阅读全文
摘要:Kruskal算法(又称克鲁斯卡尔算法)。 其思想是:首先将图看成是由一个个孤立的顶点组成,然后按边的权重从小到大处理,将顶点连接起来, 并且要保证选取的边不会跟已选取的边构成环,当选出 V - 1 条边时最小生成树生成完成。 Kruskal 算法每次选取出最小的横切边(横切边就是连接最小生成树及其
阅读全文
摘要:平衡查找树 理想情况下,我们希望能够保持二分查找树的平衡性。 在一棵含有 N 个结点的树中,我们希望树高为 。 2-3 树 2-3 树由两种结点组成: 2- 结点:有一个键和两条链接 3- 结点:有两个键和三条链接 向一棵 2-3 树插入一个键值对: 如果查找结束于一个 2-
阅读全文
摘要:单词查找树 单词查找树适用于以字符串为键的查找算法。 性能: 查找命中所需的时间与被查找的键的长度成正比 查找未命中只需检查若干个字符 以字符串为键的符号表的 API: public interface StringST<Value> { void put(String key, Value val
阅读全文
摘要:Boyer Moore 算法思想:将模式字符串与文本字符串从右往左进行匹配。 Boyer Moore 需要先对模式字符串进行预处理,根据模式字符串生成 right[] 数组,记录字符集中的字符在模式字符串中最右出现的位置。 当将模式字符串从右往左对比出现不匹配时,会有以下情况: 文本字符 text.
阅读全文
摘要:子字符串查找:在文本中查找与模式字符串相匹配的子串。 将文本字符串的每个字符作为起点,尝试找出与模式字符串匹配的子串。 /** * 暴力查找子字符串 * */ public static int search(String pattern, String text) { int M = patter
阅读全文
摘要:KMP 是发明此算法的三个人名字首字母。(Knuth, Morris, Pratt) 暴力查找每次匹配失败时都需要回退指针 i,并重新对比已经检查过的字符。 KMP 通过对模式字符串进行预处理,生成一个确定有限状态自动机, 将文本字符串的字符依次放到自动机中,可以直接得到需要和文本字符串下一个字符
阅读全文
摘要:无向图 无向图 API: public abstract Graph { Graph(int V); // 创建一个含有 V 个顶点的图 Graph(In in); // 从标准输入读取一幅图 int V(); // 顶点数 int E(); // 边数 void addEdge(int v, in
阅读全文
摘要:数据压缩算法 霍夫曼编码 霍夫曼编码(Huffman Coding) 霍夫曼编码是一种能够大幅压缩自然语言文件空间的数据压缩技术。 主要思想:用较少的比特表示出现频率高的字符,用较多的比特表示出现频率低的字符。 变长前缀码 前缀码:如果所有字符编码都不会成为其他字符编码的前缀,那么就不需要分隔符了。
阅读全文