掌握数据结构和算法直接的好处就是能写出性能更优的代码。算法是一种解决问题的思路和方法,从长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够训练大脑思考能力的途径之一。
关于要不要学数据结构和算法以及算法有没有用这种问题不想再多做解释,只能说志同道合者共行,如果你也感兴趣,可以和我一起学习数据结构和算法题。
🍭 学习路线加强巩固数据结构基础知识,通过 leetcode 算法题加深对数据结构的理解。
数组 | 链表 | 栈 | 跳表 | 散列表 | 二叉树 |
---|---|---|---|---|---|
️⭐⭐⭐ | ⭐⭐⭐ | ⭐ | ️⭐ | ️⭐⭐ | ️⭐⭐⭐ |
贪心 | 分治 | 回溯 | 动态规划 | 递归 | 复杂度分析 |
---|---|---|---|---|---|
️⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ️⭐⭐⭐ | ️⭐⭐⭐ | ⭐⭐⭐ |
以下列出面试高频出现,以及一些非常经典重要的算法题: 总计:100 已完成:44 未完成:56
实战题目 - Array
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
11 | 中等 | 盛最多水的容器 | container with most water | ✅ |
26 | 简单 | 删除排序数组中重复项 | remove Duplicates from sorted array | ✅ |
66 | 简单 | 加一 | plus one | ✅ |
70 | 简单 | 爬楼梯 | climbing stairs | ✅ |
88 | 简单 | 合并两个有序数组 | merge sorted array | ✅ |
189 | 简单 | 旋转数组 | rotate array | ✅ |
283 | 简单 | 移动零 | move zeroes | ✅ |
实战题目 - Linked List
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
21 | 简单 | 合并两个有序链表 | merge two sorted lists | ✅ |
24 | 中等 | 两两交换链表中的节点 | swap nodes in pairs | ✅ |
25 | 困难 | K 个一组翻转链表 | reverse node in k group | ✅ |
141 | 简单 | 环形链表 | linkedList cycle | ✅ |
142 | 中等 | 环形链表II | linked list cycle II | ✅ |
206 | 简单 | 反转链表 | reverse list | ✅ |
其他实战题目
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
1 | 简单 | 两数之和 | two sum | ✅ |
15 | 中等 | 三数之和 | three sum | ✅ |
20 | 简单 | 有效的括号 | valid parenthese | ✅ |
42 | 困难 | 接雨水 | trapping rain water | ✅ |
49 | 中等 | 字母异位词分组 | group anagrams | ✅ |
84 | 困难 | 柱状图中最大的矩形 | ❎ | |
155 | 简单 | 最小栈 | min stack | ✅ |
239 | 困难 | 滑动窗口最大值 | sliding window maximum | ✅ |
242 | 简单 | 有效的字母异位词 | valid anagram | ✅ |
641 | 中等 | 设计循环双端队列 | ❎ |
实战题目 - Binary Tree
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
22 | 中等 | 括号生成 | ❎ | |
94 | 中等 | 二叉树的中序遍历 | binary tree inorder traversal | ✅ |
98 | 中等 | 验证二叉搜索树 | validate binary search tree | ✅ |
104 | 简单 | 二叉树的最大深度 | maximum depth of binary tree | ✅ |
105 | 中等 | 从前序与中序遍历序列构造二叉树 | construct binary tree | ✅ |
111 | 简单 | 二叉树的最小深度 | minimum depth of binary tree | ✅ |
144 | 中等 | 二叉树的前序遍历 | binary tree preorder traversal | ✅ |
226 | 简单 | 翻转二叉树 | invert binary tree | ✅ |
230 | 中等 | 二叉搜索树中第K小的元素 | ❎ | |
236 | 中等 | 二叉树的最近公共祖先 | lowest common ancestor | ✅ |
297 | 困难 | 二叉树的序列化与反序列化 | ❎ | |
429 | 简单 | N叉树的层序遍历 | n ary tree level order traversal | ✅ |
589 | 简单 | N叉树的前序遍历 | ❎ | |
590 | 简单 | N叉树的后序遍历 | ❎ |
实战题目 - 分治
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
17 | 中等 | 电话号码的字母组合 | ❎ | |
50 | 中等 | Pow(x, n) | pow x - n | ✅ |
78 | 中等 | 子集 | subsets | ✅ |
169 | 简单 | 求众数 | ❎ |
实战题目 - 二分查找
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
33 | 中等 | 搜索旋转排序数组 | search in rotated sorted array | ✅ |
69 | 简单 | x 的平方根 | sqrtx | ✅ |
367 | 简单 | 有效的完全平方数 | valid perfect square | ✅ |
实战题目 - 并查集
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
130 | 中等 | 被围绕的区域 | ❎ | |
200 | 中等 | 岛屿数量 | number of islands | ✅ |
547 | 中等 | 朋友圈 | ❎ |
实战题目 - 遍历和搜索
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
102 | 中等 | 二叉树的层次遍历 | binary tree level order traversal | ✅ |
126 | 困难 | 单词接龙 II | ❎ | |
127 | 中等 | 单词接龙 | ❎ | |
433 | 中等 | 最小基因变化 | ❎ | |
515 | 中等 | 在每个树行中找最大值 | ❎ | |
529 | 中等 | 扫雷游戏 | ❎ |
实战题目 - 动态规划
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
32 | 中等 | 最长有效括号 | ❎ | |
45 | 困难 | 跳跃游戏 II | ❎ | |
55 | 困难 | 跳跃游戏 | ❎ | |
62 | 中等 | 不同路径 | unique paths | ✅ |
63 | 中等 | 不同路径 II | unique paths II | ✅ |
64 | 中等 | 最小路径和 | ❎ | |
72 | 困难 | 编辑距离 | ❎ | |
76 | 困难 | 最小覆盖子串 | ❎ | |
91 | 中等 | 解码方法 | ❎ | |
120 | 中等 | 三角形最小路径和 | ❎ | |
121 | 简单 | 买卖股票的最佳时机 | best time to buy and shell stock | ✅ |
122 | 简单 | 买卖股票的最佳时机 II | best time to buy and shell stock ii | ✅ |
123 | 困难 | 买卖股票的最佳时机 III | ❎ | |
152 | 中等 | 乘积最大子序列 | ❎ | |
188 | 困难 | 买卖股票的最佳时机 IV | ❎ | |
198 | 简单 | 打家劫舍 | house robber | ✅ |
213 | 中等 | 打家劫舍 II | house robber ii | ✅ |
221 | 中等 | 最大正方形 | ❎ | |
279 | 中等 | 完全平方数 | ❎ | |
322 | 中等 | 零钱兑换 | ❎ | |
518 | 中等 | 零钱兑换 II | ❎ | |
309 | 中等 | 最佳买卖股票时机含冷冻期 | ❎ | |
312 | 困难 | 戳气球 | ❎ | |
363 | 困难 | 矩形区域不超过 K 的最大数值和 | ❎ | |
403 | 困难 | 青蛙过河 | ❎ | |
410 | 困难 | 分割数组的最大值 | ❎ | |
552 | 困难 | 学生出勤记录 II | ❎ | |
621 | 中等 | 任务调度器 | ❎ | |
647 | 中等 | 回文子串 | ❎ | |
714 | 中等 | 买卖股票的最佳时机含手续费 | ❎ | |
980 | 困难 | 不同路径 III | ❎ |
实战题目 - 剪枝
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
36 | 中等 | 有效的数独 | ❎ | |
37 | 困难 | 解数独 | ❎ | |
51 | 困难 | N皇后 | ❎ |
实战题目 - 贪心
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
455 | 简单 | 分发饼干 | ❎ | |
860 | 简单 | 柠檬水找零 | ❎ | |
874 | 简单 | 模拟行走机器人 | ❎ |
实战题目 - trie 树
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
208 | 中等 | 实现 Trie (前缀树) | ❎ | |
212 | 困难 | 单词搜索 II | ❎ |
实战题目 - 位运算
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
52 | 困难 | N皇后 II | ❎ | |
190 | 简单 | 颠倒二进制位 | ❎ | |
191 | 简单 | 位1的个数 | ❎ | |
231 | 简单 | 2的幂 | ❎ | |
338 | 中等 | 比特位计数 | ❎ |
实战题目 - LRU Catch
题号 | 难度 | 题目链接 | 答案链接 | 是否完成 |
---|---|---|---|---|
146 | 困难 | LRU缓存机制 | ❎ |
当被问到背包的时候,你第一个想到的是什么?点击查看回溯 + 动态规划两种方式解决背包问题