NO. | Title | Description | Solution | Note |
---|---|---|---|---|
1 | 选择排序 | 将最小的数交换到待排序序列的最前面 | Java | Note |
2 | 冒泡排序 | 每轮冒泡(循环)把最小/大的数放在最后 | Java | Note |
3 | 插入排序 | 维护一个有序列,不停把新元素插入其中 | Java | Note |
4 | 希尔排序 | 通过粗粒度的插入排序改善数列的有序程序,逐步细化,直到间隔为 1 | Java | Note |
5 | 归并排序 | 先拆分,后按顺序合并 | Java | Note |
6 | 快速排序 | 选择一个基准数,使得基准数左边小右面大,左右再次迭代 | Java | Note |
7 | 堆排序 | 通过建立最大/小堆 + 下沉元素找到最值 | Java | Note |
8 | 计数排序 | 开辟额外空间,统计每个元素的数量 | Java | Note |
9 | 桶排序 | 划分多个范围相同的区间,每个自区间自排序,最后合并 | Java | Note |
10 | 基数排序 | 从最低位向最高位依次排序 | Java | Note |
NO. | Title | Tags | Difficult | Solution | Note | Code It Now!! |
---|---|---|---|---|---|---|
3 | 数组中重复的数字 | 数组、哈希表 | 简单 | Java | Note | GO! |
4 | 二维数组中的查找 | 数组、双指针 | 简单 | Java | Note | GO! |
5 | 替换空格 | 字符串 | 简单 | Java | Note | GO! |
6 | 从尾到头打印链表 | 链表 | 简单 | Java | Note | GO! |
7 | 重建二叉树 | 树、递归 | 中等 | Java | Note | GO! |
8 | 二叉树的下一个结点 | 树 | 简单 | Java | Note | GO! |
9 | 用两个栈实现队列 | 栈 | 简单 | Java | Note | GO! |
10.1 | 斐波那契数列 | 递归 | 简单 | Java | Note | GO! |
10.2 | 矩形覆盖 | 递归 | 简单 | Java | Note | GO! |
10.3 | 跳台阶 | 递归 | 简单 | Java | Note | GO! |
10.4 | 变态跳台阶 | 递归、动态规划 | 简单 | Java | Note | GO! |
11 | 旋转数组的最小数字 | 二分 | 简单 | Java | Note | GO! |
12 | 矩阵中的路径 | 深度优先搜索 | 中等 | Java | Note | GO! |
13 | 机器人的运动范围 | 深度优先搜索 | 中等 | Java | Note | GO! |
14.1 | 剪绳子I | 动态规划、数学 | 中等 | Java | Note | GO! |
14.2 | 剪绳子II | 动态规划、数学 | 中等 | Java | Note | GO! |
15 | 二进制中1的个数 | 位运算 | 简单 | Java | Note | GO! |
16 | 数值的整数次方 | 快速幂 | 中等 | Java | Note | GO! |
17 | 打印从1到最大的n位数 | 数学 | 简单 | Java | Note | GO! |
18.1 | 在 O(1) 时间内删除链表节点 | 链表 | 简单 | Java | Note | GO! |
18.2 | 删除链表中重复的结点 | 链表 | 简单 | Java | Note | GO! |
19 | 正则表达式匹配 | 动态规划 | 困难 | Java | Note | GO! |
20 | 表示数值的字符串 | 字符串、数学 | 中等 | Java | Note | GO! |
21 | 调整数组顺序使奇数位于偶数前面 | 数组、双指针 | 简单 | Java | Note | GO! |
22 | 链表中倒数第k个节点 | 链表、双指针 | 简单 | Java | Note | GO! |
23 | 链表中环的入口结点 | 链表、双指针 | 中等 | Java | Note | GO! |
24 | 反转链表 | 链表 | 简单 | Java | Note | GO! |
25 | 合并两个排序的链表 | 链表 | 简单 | Java | Note | GO! |
26 | 树的子结构 | 树 | 简单 | Java | Note | GO! |
27 | 二叉树的镜像 | 树 | 简单 | Java | Note | GO! |
28 | 对称的二叉树 | 树 | 简单 | Java | Note | GO! |
29 | 顺时针打印矩阵 | 数组 | 简单 | Java | Note | GO! |
30 | 包含min函数的栈 | 栈 | 简单 | Java | Note | GO! |
31 | 栈的压入、弹出序列 | 栈 | 中等 | Java | Note | GO! |
32.1 | 从上往下打印二叉树 | 树、广度优先搜索 | 中等 | Java | Note | GO! |
32.2 | 从上往下打印二叉树II | 树、广度优先搜索 | 简单 | Java | Note | GO! |
32.3 | 从上往下打印二叉树III | 树、广度优先搜索 | 简单 | Java | Note | GO! |
33 | 二叉搜索树的后序遍历序列 | 树 | 中等 | Java | Note | GO! |
34 | 二叉树中和为某一值的路径 | 树、深度优先搜索 | 中等 | Java | Note | GO! |
35 | 复杂链表的复制 | 链表 | 中等 | Java | Note | GO! |
36 | 二叉搜索树与双向链表 | 树 | 中等 | Java | Note | GO! |
37 | 二叉搜索树与双向链表 | 树、设计 | 困难 | Java | Note | GO! |
38 | 字符串的排列 | 回溯 | 中等 | Java | Note | GO! |
39 | 数组中出现次数超过一半的数字 | 摩尔投票 | 简单 | Java | Note | GO! |
40 | 最小的K个数 | 快排、堆 | 中等 | Java | Note | GO! |
41.1 | 数据流中的中位数 | 堆、设计 | 困难 | Java | Note | GO! |
41.2 | 字符流中第一个不重复的字符 | 队列、设计 | 中等 | Java | Note | GO! |
42 | 连续子数组的最大和 | 动态规划 | 简单 | Java | Note | GO! |
43 | 从1到n整数中1出现的次数 | 数学 | 困难 | Java | Note | GO! |
44 | 数字序列中某一位的数字 | 数学 | 中等 | Java | Note | GO! |
45 | 把数组排成最小 | 排序 | 中等 | Java | Note | GO! |
46 | 把数字翻译成字符串 | 动态规划、递归 | 中等 | Java | Note | GO! |
47 | 礼物的最大价值 | 动态规划 | 中等 | Java | Note | GO! |
48 | 最长不含重复字符的子字符串 | 滑动窗口 | 中等 | Java | Note | GO! |
49 | 丑数 | 动态规划 | 中等 | Java | Note | GO! |
50 | 第一个只出现一次的字符位置 | 哈希 | 简单 | Java | Note | GO! |
51 | 数组中的逆序对 | 归并排序 | 困难 | Java | Note | GO! |
52 | 两个链表的第一个公共结点 | 链表、双指针 | 简单 | Java | Note | GO! |
53.1 | 在排序数组中查找数字 | 数组、二分查找 | 简单 | Java | Note | GO! |
53.2 | 0~n-1中缺失的数字 | 数组、二分查找 | 简单 | Java | Note | GO! |
54 | 二叉搜索树的第 K 大节点 | 树 | 简单 | Java | Note | GO! |
55.1 | 在排序数组中查找数字 | 树、层次遍历、深度优先 | 简单 | Java | Note | GO! |
55.2 | 平衡二叉树 | 树、深度优先 | 简单 | Java | Note | GO! |
56.1 | 数组中数字出现的次数 | 位运算 | 中等 | Java | Note | GO! |
56.2 | 数组中数字出现的次数II | 位运算 | 中等 | Java | Note | GO! |
57.1 | 和为 S 的两个数字 | 双指针 | 简单 | Java | Note | GO! |
57.2 | 和为 S 的连续正数序列 | 双指针、滑动窗口 | 简单 | Java | Note | GO! |
58.1 | 翻转单词顺序 | 双指针、字符串 | 简单 | Java | Note | GO! |