A project to record algorithm practice.
- Notes
- Leetcode Rewrite
- Google Kick Start
- Special algorithm
- Stack and Queue
- Divide and Conquer
- Recursion and Dynamic Programming
- Greedy
- Array and Matrix
- Linked List
- Binary Tree
- Other
- multithreading
- Company
- Book
- 2. 两数相加
- 3. 无重复字符的最长子串
- 5. 最长回文子串
- 6. Z 字形变换
- 8. 字符串转换整数 (atoi)
- 11. 盛最多水的容器
- 12. 整数转罗马数字
- 15. 三数之和
- 16. 最接近的三数之和
- 17. 电话号码的字母组合
- 19. 删除链表的倒数第 N 个结点
- 22. 括号生成
- 面试题 01.05. 一次编辑
- 面试题 01.07. 旋转矩阵
- 面试题 01.08. 零矩阵
- 面试题 02.04. 分割链表
- 面试题 04.01. 节点间通路
- 面试题 04.03. 特定深度节点链表
- 面试题 04.05. 合法二叉搜索树
- 面试题 04.06. 后继者
- 面试题 04.08. 首个共同祖先
- 面试题 04.10. 检查子树
- 面试题 04.12. 求和路径
- 面试题 05.08. 绘制直线
- 面试题 08.02. 迷路的机器人
- 面试题 08.04. 幂集
- 面试题 08.05. 递归乘法
- 面试题 08.07. 无重复字符串的排列组合
- 面试题 08.09. 括号
- 面试题 08.11. 硬币
- 2020-Round-A-Allocation
- 2020-Round-A-Plates
- 2020-Round-A-Workout
- 2020-Round-A-Bundling
- 2020-Round-B-Bike Tour
- 2020-Round-B-Bus Routes
- 2020-Round-B-Robot Path Decoding
- 2020-Round-B-Wandering Robot
- 2020-Round-C-countdown
- 栈中实现返回最小元素的操作
- 两个栈构成一个队列
- 仅用递归函数和栈操作逆序一个栈
- 猫狗队列
- 用一个栈实现另一个栈的排序
- 生成窗口最大值数组
- 最小栈
- Snakes and Ladders
- 公交路线
- 发文章最多的十个用户
- 01背包
- 01背包装满
- 多重背包
- 加强版汉诺塔(递归解法)
- 找一串数字的最大算式
- 最小化所有子序列中最大值的和
- 对树着色问题
- 最大化分词后词汇质量的和
- 带权活动选择问题
- 最长回文子串
- 电话号码的字母组合
- 删除链表的倒数第N个节点
- 最长有效括号
- 报数
- 全排列
- 最大子序和
- 不同路径
- 不同路径II
- 爬楼梯
- 打家劫舍
- 打家劫舍II
- 使用最小花费爬楼梯
- 三步问题
- 连续数列
- 最小路径和
- 按摩师
- 硬币
- 剪绳子
- 剪绳子II
- 最佳买卖股票时机含冷冻期
- 礼物的最大价值
- 一次编辑
- 2出现的次数
- 最长公共子序列
- 等差数列划分
- 最小基因变化
- 超级次方
- 目标和
- 所有可能的路径
- 螺旋矩阵
- 螺旋矩阵II
- 合并两个有序数组
- 买卖股票的最佳时机
- 买卖股票的最佳时机II
- 只出现一次的数字
- 多数元素
- 存在重复元素
- 反转字符串
- 反转字符串中的单词 III
- 数组中第k大的数
- 除自身以外数组的乘积
- 加一
- 旋转图像
- 两个数组的交集 II
- 移动零
- 缺失数字
- 跳跃游戏
- 旋转数组
- 寻找重复数
- 矩阵置零
- 颜色分类
- 四数相加 II
- 有序矩阵中第K小的元素
- 加油站
- 缺失的第一个正数
- 数组的相对排序
- 复写零
- 柠檬水找零
- 数组的度
- 最长连续递增序列
- 统计有序矩阵中的负数
- 移动石子直到连续
- 子数组最大平均数 I
- 找到小镇的法官
- 非递减数列
- 最大连续1的个数
- 统计最大组的数目
- 最小绝对差
- 供暖器
- 较大分组的位置
- 下一个更大元素 I
- 最后一块石头的重量
- 字典序排数
- 错误的集合
- 只出现一次的数字 II
- 朋友圈
- 有效的山脉数组
- 三个数的最大乘积
- 不同整数的最少数目
- 每日温度
- 两句话中的不常见单词
- 文件的最长绝对路径
- 课程安排 IV
- 网络延迟时间
- 逐步求和得到正数的最小值
- 比特位计数
- 卡牌分组
- 甲板上的战舰
- 员工的重要性
- 二叉树的最大深度
- 二叉搜索树的最近公共祖先
- 二叉树的最近公共祖先
- 二叉搜索树中第K小的元素
- 二叉树中的最大路径和
- 相同的树
- 对称二叉树
- 二叉树的中序遍历
- 二叉树的层次遍历
- 从前序与中序遍历序列构造二叉树
- 根据前序和后序遍历构造二叉树
- 填充每个节点的下一个右侧节点指针
- 二叉树的锯齿形层次遍历
- 左叶子之和
- 二叉树的层平均值
- N叉树的最大深度
- 二叉树的层次遍历 II
- 子集
- 格雷编码
- Nim 游戏
- 2的幂
- 字符串相乘
- 两数相除
- 杨辉三角
- Excel表列序号
- 有效的字母异位词
- 字符串中的第一个唯一字符
- Fizz Buzz
- 两整数之和
- 3的幂
- 字母异位词分组
- Pow(x, n)
- 位1的个数
- 验证回文串
- 计数质数
- 阶乘后的零
- 宝石和石头
- 6 和 9 组成的最大数字
- 单词规律
- 平方数之和
- 最长回文串
- 七进制数
- 计算日期差
- 十进制整数的反码
- 有效电话号码
- 长按键入
- 仅仅反转字母
- 二进制间距
- 字符串中的单词数
- 复数乘法
- 重复的子字符串
- 密钥格式化
- 4的幂
- 镜面反射
- 学生出勤记录 I
- 验证外星语词典
- 比较版本号
- 给定数字能组成的最大时间
- 判断路径是否相交
- 使括号有效的最少添加
- 字母大小写全排列
- 一周中的第几天
- 转变日期格式
- 计数二进制子串
- 生产者消费者
- 交替打印AB
- 交替打印FooBar
- 交替打印ABC(ReentrantLock)
- 交替打印ABC(synchronized实现)
- 按序打印
- 打印零与奇偶数
- 老板等员工干活
- 十个线程求1到10000的和
- 交替打印字符串
- HR和面试官
- 字典序的第K小数字
- 分发糖果
- 接雨水
- K 个一组翻转链表
- 合并区间
- 复原IP地址
- 岛屿数量
- 编辑距离
- 正则表达式匹配
- 求n次方高效算法
- 求众数II
- 各位相加
- 二叉树中和为某一值的路径
- 零钱兑换
- 两数之和 II - 输入有序数组
- 判断子序列
- 键盘行
- 组合总和
- 组合
- 农场小鸡的数目
- 英雄打怪兽
- 病毒传播
- 集合操作
- 一刀999
- 最多投票
- 大数相加
- 大数相加
- 区间覆盖
- 多多鸡和多多鸭
- 两数乘积最大
- 性价比最高的雨棚
- 挑选舞蹈演员
- 寻找数字
- 交换子树
- 奇怪的键盘
- 纸张问题
- 计算第K个位置
- 大哥数数
- 大哥数数
- 甘特图研发
- 分割段式字符串
- 完美数
- 键盘输入
- 计算日期
- 最佳节点
- 最少编译时间
- 优雅字符串
- 递增序列
- 微软笔试一
- 微软笔试二
- 微软笔试三
- 不重复的字符串
- 紧急快递
- 链表聚集交换
- 数组中的重复数字
- 替换空格
- 机器人的运动范围
- 二叉搜索树的后序遍历序列
- 从尾到头打印链表
- 用两个栈实现队列
- 字符串的排列
- 打印从1到最大的n位数
- 删除链表的节点
- 把数组排成最小的数
- 顺时针打印矩阵
- 两个链表的第一个公共节点
- 反转链表
- 调整数组顺序使奇数位于偶数前面
- 不用加减乘除做加法
- 和为s的连续正数序列
- 最长不含重复字符的子字符串
- 把数字翻译成字符串
- 求1+2+…+n
- 数字序列中某一位的数字
- n个筛子的点数
- 数值的整数次方
- 数组中数字出现的次数
- 翻转数位
- 不用加号的加法
- 最小差
- 变位词组
- 最短超串
- 下一个数
- 部分排序
- 滑动窗口的最大值
- 阶乘尾数
- 奇数值单元格的数目
- 自除数
- 峰与谷
- 判定是否互为字符重排
- URL化
- 返回倒数第 k 个节点
- 链表求和
- 字符串压缩
- 左旋转字符串
- 主要元素