├── README.md ├── draw.io ├── README.md ├── 下一个排列.drawio ├── 不同路径.drawio ├── 不同路径II.drawio ├── 乘积小于K的子数组.drawio ├── 乘积最大子数组.drawio ├── 买卖股票的最佳时机I.drawio ├── 买卖股票的最佳时机II.drawio ├── 买卖股票的最佳时机III.drawio ├── 买卖股票的最佳时机含手续费.drawio ├── 二叉搜索树中第K小的元素.drawio ├── 二叉搜索树节点最小距离.drawio ├── 二叉树中第二小的节点.drawio ├── 二叉树的中序遍历.drawio ├── 二叉树的前序遍历.drawio ├── 二叉树的右视图.drawio ├── 二叉树的后序遍历.drawio ├── 二叉树的层序遍历.drawio ├── 使用最小花费爬楼梯.drawio ├── 反转链表.drawio ├── 合并K个升序链表.drawio ├── 合并两个有序数组.drawio ├── 合并两个有序链表.drawio ├── 和为 K 的子数组.drawio ├── 复制复杂链表.drawio ├── 多数元素.drawio ├── 存在重复元素II.drawio ├── 对角线遍历.drawio ├── 将二叉搜索树转化为排序的双向链表 .drawio ├── 将二叉搜索树转化为排序的双向链表.drawio ├── 打乱数组.drawio ├── 打家劫舍 II.drawio ├── 打家劫舍.drawio ├── 数据流的中位数.drawio ├── 数组中的第K个最大元素.drawio ├── 斐波那契数列.drawio ├── 旋转图像.drawio ├── 无重复字符的最长子串.drawio ├── 最大正方形.drawio ├── 最大连续1的个数III.drawio ├── 最小覆盖子串.drawio ├── 最小路径和.drawio ├── 最长有效括号.drawio ├── 栅栏涂色.drawio ├── 滑动窗口最大值.drawio ├── 爬楼梯.drawio ├── 环形链表 I.drawio ├── 用Rand7()实现Rand10().drawio ├── 电话号码的字母组合.drawio ├── 相交链表.drawio ├── 粉刷房子 I.drawio ├── 粉刷房子 II.drawio ├── 组合.drawio ├── 组合总合III.drawio ├── 组合总和.drawio ├── 螺旋矩阵.drawio ├── 螺旋矩阵II.drawio ├── 路径和.drawio ├── 路径总和II.drawio ├── 跳跃游戏II.drawio ├── 连续数组.drawio ├── 适龄的朋友.drawio ├── 递增的三元子序列.drawio ├── 重复的DNA序列.drawio ├── 链表排序.drawio ├── 链表的中间结点.drawio ├── 长度最小的子数组.drawio ├── 除自身以外数组的乘积.drawio ├── 零钱兑换.drawio ├── 颜色分类.drawio └── 验证二叉搜索树.drawio ├── qr.png ├── resource └── image │ ├── qr1.png │ ├── qr2.png │ ├── qr3.png │ └── qr4.png ├── 图解大厂高频算法题 ├── README.md ├── 动态规划 │ ├── 0152-乘积最大子数组.pdf │ ├── 0198-打家劫舍.pdf │ ├── 0213-打家劫舍 II.pdf │ ├── 0221-最大正方形.pdf │ ├── 0256-粉刷房子.pdf │ ├── 0265-粉刷房子 II(VIP).pdf │ └── 0276-栅栏涂色.pdf └── 链表 │ ├── 0021-合并两个有序链表.pdf │ ├── 0023-合并K个升序链表.pdf │ ├── 0138-复制带随机指针的链表.pdf │ ├── 0141-环形链表.pdf │ ├── 0148-排序链表.pdf │ ├── 0160-相交链表.pdf │ ├── 0206-反转链表.pdf │ ├── 0876-链表的中间结点.pdf │ └── 2095-删除链表的中间节点.pdf └── 导读.md /draw.io/README.md: -------------------------------------------------------------------------------- 1 | # draw.io 2 | -------------------------------------------------------------------------------- /draw.io/不同路径.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /draw.io/乘积小于K的子数组.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /draw.io/买卖股票的最佳时机含手续费.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /draw.io/二叉搜索树中第K小的元素.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /draw.io/二叉搜索树节点最小距离.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /draw.io/二叉树中第二小的节点.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /draw.io/二叉树的右视图.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /draw.io/二叉树的后序遍历.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /draw.io/对角线遍历.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /draw.io/将二叉搜索树转化为排序的双向链表.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /draw.io/打乱数组.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /draw.io/数据流的中位数.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /draw.io/斐波那契数列.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /draw.io/最大连续1的个数III.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /draw.io/滑动窗口最大值.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /draw.io/路径和.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /draw.io/路径总和II.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /draw.io/重复的DNA序列.drawio: -------------------------------------------------------------------------------- 1 | UzV2zq1wL0osyPDNT0nNUTV2VTV2LsrPL4GwciucU3NyVI0MMlNUjV1UjYwMgFjVyA2HrCFY1qAgsSg1rwSLBiADYTaQg2Y1AA== -------------------------------------------------------------------------------- /draw.io/长度最小的子数组.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /draw.io/除自身以外数组的乘积.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /draw.io/颜色分类.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/qr.png -------------------------------------------------------------------------------- /resource/image/qr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/resource/image/qr1.png -------------------------------------------------------------------------------- /resource/image/qr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/resource/image/qr2.png -------------------------------------------------------------------------------- /resource/image/qr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/resource/image/qr3.png -------------------------------------------------------------------------------- /resource/image/qr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/resource/image/qr4.png -------------------------------------------------------------------------------- /图解大厂高频算法题/README.md: -------------------------------------------------------------------------------- 1 | # 算法手册 2 | 3 | ## 介绍 4 | 5 | 金刀这几年为了准备跳槽刷过很多算法题,在各种大中厂面试中也遇到了很多算法题,金刀基本在面试的考算法环节从未失过手。我遇到的算法题有些出现的频率很高,甚至出现了N多次,也有很多算法题可以通过举一反三解答出来。再加上金刀作为面试官面试过很多候选人,面试前都会细心准备算法题,深知哪些算法题的考点是哪些,哪类题目容易出现在面试中。 6 | 现在各大平台上与算法相关的内容已经非常非常多了,让人眼花缭乱,但是金刀还是决定整理一份算法专题分享给大家,金刀整理的这些算法题都是精华。根据“二八法则”的原理,以付出20%的时间成本,获得80%的刷题的收益,让那些想进互联网大厂的人少走些弯路。 7 | 8 | ## 目标人群 9 | 1. 有基本的编程语言基础 10 | 2. 毕业后想进互联网大厂的计算机专业/或想转计算机专业的同学 11 | 3. 有工作经验,想进互联网大厂的人 12 | 4. 想练习算法的人 13 | 14 | ## 如何使用 15 | ### 刷题顺序 16 | 这些算法内容没有特定的刷题顺序,大家随意就好,但是一定要按题目的类型做题。此算法手册对每一类的题型都有归纳总结,先讲针对此题型的通用算法和思路,然后才是针对每一道题讲解具体的解法。比如可以先选择链表类的题型,把它们都做完。这样的一个好处就是你自己可以很容易地进行题型归纳与总结,类型相同地题目有很多可以举一反三。可能你碰见一道不会做的题目,但是认真看完题目讲解之后,碰见下一道相似的题没准就有思路了。 17 | 18 | ### 实在不会怎么办? 19 | 加我微信(备注算法群) ,拉你进交流群,还可以对你进行一对一指导。 20 | 21 | 22 | ### 学完本手册你将会获得什么? 23 | 如果你可以很认真地学习完本手册目,那么你可以收获: 24 | 1. 互联网大厂非常高频的面试题(很多都是金刀和金刀的同事/小伙伴们遇到的) 25 | 2. 对于数组/链表/树/Map等数据结构的熟练掌握 26 | 3. 良好的计算机编程思维 27 | 4. 如果你在刷题群里,你还可以收获一大堆跟你一起学习的小伙伴 28 | 29 | ### 题目难度 30 | 本算法手册大部分为medium难度的题目,少量easy和hard难度的题目。 31 | 对于想刷题进大厂的小伙伴来说,medium就足以了,一般互联网大厂问的medium难度的题目比较多,问hard的难度的题很少。 32 | 33 | ### 重要的事情要说三遍 34 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 35 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 36 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 37 | 38 | ## 刷题有何意义 39 | 刷题在每个人的不同人生阶段意义不同,金刀在这里先不讲虚的,讲一讲实际一点地。我先说一下找工作时/工作后的这几年刷算法题对我的意义。金刀每一次刷题其实主要都是为了找工作。我在平时日常工作过程中,不能说没有遇到过算法场景(除了使用一些c++ STL/Java Hashmap等标准库),只能说遇到使用算法场景很少。但是目前不管大中厂还是小厂,面试的是都会对候选人考察算法能力。尤其是一些外企像微软/亚马等外企和国内大厂的核心部门,对算法的考察非常严格,在面试时很多情况下你算法题没做出来那面试就挂了。更何况现在学计算机的人越来越多,企业为了降低招聘人才的成本,会先用算法题过滤一批人,而且随着每年学计算机专业的学生越来越多,这个门槛儿会不断提高。如果你想找到一份心仪的工作,想进入大厂工作,掌握良好的算法是必须要迈过的门槛。因此金刀在准备跳槽的时候都会非常认真准备刷题,至少认真准备刷题让金刀在面试的算法环节没有失手过。想进入大厂,首先需要迈过算法考察这个门槛。所以刷算法题最重要的意义之一就是为了找到满意的工作。 40 | 41 | 但是除了找工作呢?其实刷题最大的意义就是可以很好地培养编程思维,通过练习算法,可以提升辑个人思维能力,个人思维能力会影响工作中的方方面面。算法好的人,通常学习能力都很强,一点就通,说什么马上能明白。特别是在系统设计/架构设计等问题上,能够给出很好的设计。所以刷题可以全方位地提升个人地编程能力。我在日常工作的过程中就是主要就是coding,小到api调用/CURD,大到整体的系统架构的设计,你写出的代码是否足够简洁,是否清晰易懂,是否有良好的性能,BUG是否很少,项目上线的时候是否会出现故障,这些都很大程度上取决你的编程思维和逻辑能力。在需求或项目上线前,很多公司的流程里都会有QA测试这一项,目的就是验证整个项目是否有BUG,QA还会定期总结出哪个项目出现了多少个BUG等等。所以很多项目负责人,甚至你的老板,同事等都会默默地把这些BUG记录在小本本上,看一看到底是谁产生地问题多。所以刷算法题对于培养编程思维逻辑能力是一个非常好的方式。 42 | 43 | ## 讲一讲刷题的经验 44 | ### 量变引起质变 45 | 同学们在刷题的过程中一定要记住 量变引起质变。随着知识的积累,可以把脑海中的内容由混乱的状态变成有序的状态,最终对这些知识进行提炼得到升华。 46 | 刚刚开始刷题的小伙伴可能题目都理解不了,或者easy难度的题都不会做。但是随着继续练习,渐入佳境,每种类型地题都可以做出一些,或者给一些提示就可以给出答案。随着时间的慢慢推移,掌握了各种题型的核心思路和解决方法,渐渐地有了自己的做题体系和技巧,看到题目就知道考察要点是什么,信手拈来。 47 | 48 | 看山是山: 冷眼相待 高高挂起 49 | 50 | 看山不是山: 困惑迷惘 入门 51 | 52 | 看山是山: 形成体系 信手拈来 53 | 54 | 对于那些刚开始刷题觉得很困难或屡屡在面试算法环节碰壁的小伙伴,这时你一定不要气馁不要放弃,要坚持下去硬着头皮往下做。在做题的过程中,先阅读题目,然后自己思考一下思路,不要上来就直接看答案。 55 | 56 | ### 贵在坚持 57 | 贵在坚持这句话看似比较虚,实际上对你未来的成长甚至成功至关重要。金刀也工作很多年了,认识了很多牛人,我发现他们具有一个共同点那就是他们一直在坚持做某些事。有的人一直在坚持跑步,有的人一直在坚持定期写个人总结,有的人一直在钻研某一方向的技术。这些人的坚持让他们收获了很多。坚持刷了一周算法题的人与坚持刷了两个月的算法题的人,思维逻辑肯定不一样。那坚持刷了两个月的算法题的人与坚持刷了半年的算法题的人对代码的理解和洞察能力也肯定不一样。 58 | 59 | 如果你是一个小白刚刚开始入门,那么做题的时候可能确实比较困难,这时千万不要放弃,万事开头难,只要坚持下去迈过了这道坎,后面的路会越来越好走。刚开始刷题是痛苦的,毕竟所有人几乎都是从0一步一步走过来的。但越往后刷题,每当你提交代码通过了所有验证case时,内心会非常快乐。 60 | 希望大家把刷题坚持下去。 61 | 62 | ### 偷懒小技巧 63 | 对于那些没有很多时间准备算法,或者只是想快速地应付一下面试中算法考察环节的小伙伴,在学习本算法手册时,自己可以不进行思考,而是直接记住答案记住思路。因为在编程环节,如果你有了思路的话,那么这道题基本上就可以写出来了。即使你代码写不出来或写不对,但是你可以把思路说出来,也是可以获得加分的。 64 | 65 | PS: 但是我强烈不建议大家这么做,如果时间充裕的话,还是要认真思考解题思路,这样才能有效地锻炼思维逻辑能力。 66 | 67 | ## 本算法手册的特点 68 | ### 算法归类/相似题目归类 69 | 本算法手册对链表/树/动态规划/排序/hash/栈等常见面试题型进行了归类。每一类题型都有通用的讲解。每一类的很多题目都可以举一反三,重复地刷新大家地记忆,让大家记得更牢固。 70 | 71 | ### 大厂高频题型 72 | 本算法手册的题型基本都是选自LeetCode,但是这些题目中很多都是金刀本人或金刀的同事/小伙伴们遇到过的大厂高频题型。如果你学习完整个算法手册中的内容,那么在大厂面试算法环节绝对能得心应手,完全不用慌。 73 | 74 | ### LeetCode VIP题型 75 | 本算法手册还会有很多LeetCode上的VIP题目,你懂的。 76 | -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0152-乘积最大子数组.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0152-乘积最大子数组.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0198-打家劫舍.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0198-打家劫舍.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0213-打家劫舍 II.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0213-打家劫舍 II.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0221-最大正方形.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0221-最大正方形.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0256-粉刷房子.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0256-粉刷房子.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0265-粉刷房子 II(VIP).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0265-粉刷房子 II(VIP).pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/动态规划/0276-栅栏涂色.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/动态规划/0276-栅栏涂色.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0021-合并两个有序链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0021-合并两个有序链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0023-合并K个升序链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0023-合并K个升序链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0138-复制带随机指针的链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0138-复制带随机指针的链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0141-环形链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0141-环形链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0148-排序链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0148-排序链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0160-相交链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0160-相交链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0206-反转链表.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0206-反转链表.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/0876-链表的中间结点.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/0876-链表的中间结点.pdf -------------------------------------------------------------------------------- /图解大厂高频算法题/链表/2095-删除链表的中间节点.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goldknife6/algorithm/9c3b3fcf4677c1c056aa3e81d83cc298e9d6977a/图解大厂高频算法题/链表/2095-删除链表的中间节点.pdf -------------------------------------------------------------------------------- /导读.md: -------------------------------------------------------------------------------- 1 | # 算法手册 2 | 3 | ## 介绍 4 | 5 | 金刀这几年为了准备跳槽刷过很多算法题,在各种大中厂面试中也遇到了很多算法题,金刀基本在面试的考算法环节从未失过手。我遇到的算法题有些出现的频率很高,甚至出现了N多次,也有很多算法题可以通过举一反三解答出来。再加上金刀作为面试官面试过很多候选人,面试前都会细心准备算法题,深知哪些算法题的考点是哪些,哪类题目容易出现在面试中。 6 | 现在各大平台上与算法相关的内容已经非常非常多了,让人眼花缭乱,但是金刀还是决定整理一份算法专题分享给大家,金刀整理的这些算法题都是精华。根据“二八法则”的原理,以付出20%的时间成本,获得80%的刷题的收益,让那些想进互联网大厂的人少走些弯路。 7 | 8 | ## 目标人群 9 | 1. 有基本的编程语言基础 10 | 2. 毕业后想进互联网大厂的计算机专业/或想转计算机专业的同学 11 | 3. 有工作经验,想进互联网大厂的人 12 | 4. 想练习算法的人 13 | 14 | ## 如何使用 15 | ### 刷题顺序 16 | 这些算法内容没有特定的刷题顺序,大家随意就好,但是一定要按题目的类型做题。此算法手册对每一类的题型都有归纳总结,先讲针对此题型的通用算法和思路,然后才是针对每一道题讲解具体的解法。比如可以先选择链表类的题型,把它们都做完。这样的一个好处就是你自己可以很容易地进行题型归纳与总结,类型相同地题目有很多可以举一反三。可能你碰见一道不会做的题目,但是认真看完题目讲解之后,碰见下一道相似的题没准就有思路了。 17 | 18 | ### 实在不会怎么办? 19 | 加我微信(备注算法群) ,拉你进交流群,还可以对你进行一对一指导。 20 | 21 | 22 | ### 学完本手册你将会获得什么? 23 | 如果你可以很认真地学习完本手册目,那么你可以收获: 24 | 1. 互联网大厂非常高频的面试题(很多都是金刀和金刀的同事/小伙伴们遇到的) 25 | 2. 对于数组/链表/树/Map等数据结构的熟练掌握 26 | 3. 良好的计算机编程思维 27 | 4. 如果你在刷题群里,你还可以收获一大堆跟你一起学习的小伙伴 28 | 29 | ### 题目难度 30 | 本算法手册大部分为medium难度的题目,少量easy和hard难度的题目。 31 | 对于想刷题进大厂的小伙伴来说,medium就足以了,一般互联网大厂问的medium难度的题目比较多,问hard的难度的题很少。 32 | 33 | ### 重要的事情要说三遍 34 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 35 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 36 | 如果想面过互联网大厂算法考察环节,强烈推荐你们一定要把本教程学完。 37 | 38 | ## 刷题有何意义 39 | 刷题在每个人的不同人生阶段意义不同,金刀在这里先不讲虚的,讲一讲实际一点地。我先说一下找工作时/工作后的这几年刷算法题对我的意义。金刀每一次刷题其实主要都是为了找工作。我在平时日常工作过程中,不能说没有遇到过算法场景(除了使用一些c++ STL/Java Hashmap等标准库),只能说遇到使用算法场景很少。但是目前不管大中厂还是小厂,面试的是都会对候选人考察算法能力。尤其是一些外企像微软/亚马等外企和国内大厂的核心部门,对算法的考察非常严格,在面试时很多情况下你算法题没做出来那面试就挂了。更何况现在学计算机的人越来越多,企业为了降低招聘人才的成本,会先用算法题过滤一批人,而且随着每年学计算机专业的学生越来越多,这个门槛儿会不断提高。如果你想找到一份心仪的工作,想进入大厂工作,掌握良好的算法是必须要迈过的门槛。因此金刀在准备跳槽的时候都会非常认真准备刷题,至少认真准备刷题让金刀在面试的算法环节没有失手过。想进入大厂,首先需要迈过算法考察这个门槛。所以刷算法题最重要的意义之一就是为了找到满意的工作。 40 | 41 | 但是除了找工作呢?其实刷题最大的意义就是可以很好地培养编程思维,通过练习算法,可以提升辑个人思维能力,个人思维能力会影响工作中的方方面面。算法好的人,通常学习能力都很强,一点就通,说什么马上能明白。特别是在系统设计/架构设计等问题上,能够给出很好的设计。所以刷题可以全方位地提升个人地编程能力。我在日常工作的过程中就是主要就是coding,小到api调用/CURD,大到整体的系统架构的设计,你写出的代码是否足够简洁,是否清晰易懂,是否有良好的性能,BUG是否很少,项目上线的时候是否会出现故障,这些都很大程度上取决你的编程思维和逻辑能力。在需求或项目上线前,很多公司的流程里都会有QA测试这一项,目的就是验证整个项目是否有BUG,QA还会定期总结出哪个项目出现了多少个BUG等等。所以很多项目负责人,甚至你的老板,同事等都会默默地把这些BUG记录在小本本上,看一看到底是谁产生地问题多。所以刷算法题对于培养编程思维逻辑能力是一个非常好的方式。 42 | 43 | ## 讲一讲刷题的经验 44 | ### 量变引起质变 45 | 同学们在刷题的过程中一定要记住 量变引起质变。随着知识的积累,可以把脑海中的内容由混乱的状态变成有序的状态,最终对这些知识进行提炼得到升华。 46 | 刚刚开始刷题的小伙伴可能题目都理解不了,或者easy难度的题都不会做。但是随着继续练习,渐入佳境,每种类型地题都可以做出一些,或者给一些提示就可以给出答案。随着时间的慢慢推移,掌握了各种题型的核心思路和解决方法,渐渐地有了自己的做题体系和技巧,看到题目就知道考察要点是什么,信手拈来。 47 | 48 | 看山是山: 冷眼相待 高高挂起 49 | 50 | 看山不是山: 困惑迷惘 入门 51 | 52 | 看山是山: 形成体系 信手拈来 53 | 54 | 对于那些刚开始刷题觉得很困难或屡屡在面试算法环节碰壁的小伙伴,这时你一定不要气馁不要放弃,要坚持下去硬着头皮往下做。在做题的过程中,先阅读题目,然后自己思考一下思路,不要上来就直接看答案。 55 | 56 | ### 贵在坚持 57 | 贵在坚持这句话看似比较虚,实际上对你未来的成长甚至成功至关重要。金刀也工作很多年了,认识了很多牛人,我发现他们具有一个共同点那就是他们一直在坚持做某些事。有的人一直在坚持跑步,有的人一直在坚持定期写个人总结,有的人一直在钻研某一方向的技术。这些人的坚持让他们收获了很多。坚持刷了一周算法题的人与坚持刷了两个月的算法题的人,思维逻辑肯定不一样。那坚持刷了两个月的算法题的人与坚持刷了半年的算法题的人对代码的理解和洞察能力也肯定不一样。 58 | 59 | 如果你是一个小白刚刚开始入门,那么做题的时候可能确实比较困难,这时千万不要放弃,万事开头难,只要坚持下去迈过了这道坎,后面的路会越来越好走。刚开始刷题是痛苦的,毕竟所有人几乎都是从0一步一步走过来的。但越往后刷题,每当你提交代码通过了所有验证case时,内心会非常快乐。 60 | 希望大家把刷题坚持下去。 61 | 62 | ### 偷懒小技巧 63 | 对于那些没有很多时间准备算法,或者只是想快速地应付一下面试中算法考察环节的小伙伴,在学习本算法手册时,自己可以不进行思考,而是直接记住答案记住思路。因为在编程环节,如果你有了思路的话,那么这道题基本上就可以写出来了。即使你代码写不出来或写不对,但是你可以把思路说出来,也是可以获得加分的。 64 | 65 | PS: 但是我强烈不建议大家这么做,如果时间充裕的话,还是要认真思考解题思路,这样才能有效地锻炼思维逻辑能力。 66 | 67 | ## 本算法手册的特点 68 | ### 算法归类/相似题目归类 69 | 本算法手册对链表/树/动态规划/排序/hash/栈等常见面试题型进行了归类。每一类题型都有通用的讲解。每一类的很多题目都可以举一反三,重复地刷新大家地记忆,让大家记得更牢固。 70 | 71 | ### 大厂高频题型 72 | 本算法手册的题型基本都是选自LeetCode,但是这些题目中很多都是金刀本人或金刀的同事/小伙伴们遇到过的大厂高频题型。如果你学习完整个算法手册中的内容,那么在大厂面试算法环节绝对能得心应手,完全不用慌。 73 | 74 | ### LeetCode VIP题型 75 | 本算法手册还会有很多LeetCode上的VIP题目,你懂的。 76 | --------------------------------------------------------------------------------