Algorithm-topic 第一部分:剑指Offer第二版(Java实现) 002-实现单例模式 003-数组中重复的数字 004-二维数组中的查找 006-从尾到头打印链表 007-重建二叉树 008-二叉树的下一个节点 009-用两个栈实现队列 010-斐波那契数列(青蛙跳台阶) 011-旋转数组的最小数字 012-矩阵中的路径 013-机器人的运动范围 014-减绳子 015-二进制中1的个数 018-删除链表中的节点(删除链表中的重复节点) 019-正则表达式匹配 020-表示数值的字符串 021-调整数组顺序使奇数位于偶数前面 022-链表中倒数第k个节点 023-链表中环的入口节点 024-反转链表 025-合并两个排序的链表 026-树的子结构 027-二叉树的镜像 028-对称的二叉树 029-顺时针打印矩阵 030-包含min函数的栈 031-栈的压入、弹出序列 032-从上到下打印二叉树 042-连续子数组的最大和 052-两个链表的第一个公共节点 058-翻转单词顺序(左旋字符串) 第二部分:经典算法(Java实现) 排序算法 二分查找 全排列(未完待续) 最长回文子串 数组循环右移k位 判断一个数是否为2的幂次方 最大不相交区间 拼接最小字典序字符串 判断字符串A中是否包含B中所有的字符 查找数组中未出现的最小正整数 元素互不相邻的最大和子数组 钱币拼凑(动态规划问题) 解码字符串 若干次操作使三个数变成一样大 从一个字符串中找出字典序最大子序列 求链表的中间节点 RGB字符串排序