Awesome
AlgorithmicPractice
本篇是关于LeetCode
算法练习的总结(题目主要来源于剑指offer),内容划分为以下章节:
注:
main.cpp
展示测试效果;
一.基础数据结构
1.1 字符串
1.2 数组
二.链表
三.栈和队列
四.二叉树
五.排序
5.1 排序
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Kth Largest Element in an Array | 数组中的第K个最大元素 |
2 | Sort List | 排序链表 |
3 | Reverse pair in array | 数组中的逆序对 |
5.2 排序算法
序号 | 排序(示例链接) |
---|---|
1 | 冒泡排序 |
2 | 选择排序 |
3 | 插入排序 |
4 | 希尔排序 |
5 | 快速排序 |
6 | 归并排序 |
7 | 堆排序 |
六.二分查找
七.动态规划
八.哈希表
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Two Sum | 两数之和 |
2 | The first character that appears only once | 第一个只出现一次的字符 |
3 | Repeating numbers in the array | 数组中重复的数字 |
九.其他
9.1 滑动窗口
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Sliding Window Maximum | 滑动窗口最大值 |
2 | The maximum value of the queue | 队列的最大值 |
3 | And is a sequence of consecutive positive Numbers for S | 和为s的连续正数序列 |
9.2 递归
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Fibonacci Number | 斐波那契数 |
2 | Construct Binary Tree From Preorder And Inorder Traversal | 从前序与中序遍历序列构造二叉树 |
3 | Powx N | Pow(x, n) |
9.3 回朔算法
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Arrangement of strings | 字符串的排列 |
2 | Robot's range of motion | 机器人的运动范围 |
9.4 分治算法
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | The smallest k number | 最小的k个数 |
2 | Majority Element | 多数元素 |
3 | convert binary search tree to sorted doubly linked list | 二叉搜索树与双向链表 |
9.5 堆
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Find Median From Data Stream | 数据流的中位数 |
十.数学
10.1 位运算
10.2 其他
热门题型练习
序号 | LeetCode(题目链接) | 备注 | 题解 |
---|---|---|---|
1 | 反转链表 | ||
2 | 二叉树的最近公共祖先 | -2 | |
3 | 环形链表 II | -1 | |
4 | 最大子序和 | -2 | |
5 | 合并两个有序链表 | ||
6 | 数组中的第K个最大元素 | ||
7 | 二叉树的前序遍历 | 1 | |
8 | K个一组翻转链表 | :2 | |
9 | 用两个栈实现队列 | -1 | |
10 | 相交链表 | -2 | |
11 | LRU缓存机制 | -2 | |
12 | 买卖股票的最佳时机 | :1 | |
13 | 二叉树的完全性检验 | :2 | |
14 | 反转字符串 | ||
15 | 二叉树的层次遍历 | ||
16 | 二叉树的直径 | -2 | |
17 | 翻转二叉树 | -1 | |
18 | 两数之和 | -1 | |
19 | 无重复字符的最长子串 | -1 | |
20 | 分隔链表 | -2 | 题解 |
21 | 旋转数组 | -1 | 题解 |
22 | 路径总和 II | -1 | |
23 | 翻转字符串里的单词 | -1 | |
24 | 字符串解码 | -2 | 题解 |
25 | 爬楼梯 | -1 | |
26 | 螺旋矩阵 | -1 | |
27 | LFU缓存 | -2 | |
28 | x 的平方根 | -1 | 题解 |
29 | 零钱兑换 | -2 | 题解 |
知识点
1. 算法知识
- 单调栈,单调队列和优先队列
- 散列表(哈希表)
- 字符串匹配(BF/RK/BM/KMP/Trie树/AC自动机)
- 树(AVL/红黑树/B/B+/2-3/堆/堆排序)
- 图(关键路径/最小生成树/最短路径/拓扑排序)
- 其他(跳表/并查集/BitMap/Bloom filter/LRU)
TODO:
2. 算法问题处理
3. 算法知识收藏
附:
- 性能对比图
- 如果需要经常添加或删除结点,链表可能是一个不错的选择。
- 如果需要经常按索引访问元素,数组可能是比链表更好的选择。
- 十大排序算法比较图
- 算法知识体系图
- 常用算法时间复杂度