本篇是关于LeetCode
算法练习的总结(题目主要来源于剑指offer),内容划分为以下章节:
注:
main.cpp
展示测试效果;
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Valid Parentheses | 有效的括号 |
2 | Longest Valid Parentheses | 最长有效括号 |
3 | Evaluate Reverse Polish Notation | 逆波兰表达式求值 |
4 | Design Circular Deque | 设计循环双端队列 |
5 | Implement queue with two stacks | 用两个栈实现队列 |
6 | Min Stack | 最小栈 |
7 | Validate Stack Sequences | 验证栈序列 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Kth Largest Element in an Array | 数组中的第K个最大元素 |
2 | Sort List | 排序链表 |
3 | Reverse pair in array | 数组中的逆序对 |
序号 | 排序(示例链接) |
---|---|
1 | 冒泡排序 |
2 | 选择排序 |
3 | 插入排序 |
4 | 希尔排序 |
5 | 快速排序 |
6 | 归并排序 |
7 | 堆排序 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Climbing Stairs | 爬楼梯 |
2 | Unique Paths | 不同路径 |
3 | Maximum Subarray | 最大子序和 |
4 | Best Time to Buy and Sell Stock | 买卖股票的最佳时机 |
5 | The greatest value of gifts | 礼物的最大价值 |
6 | Word Search | 单词搜索 |
7 | Integer Break | 整数拆分 |
8 | Regular Expression Matching | 正则表达式匹配 |
9 | n dice points | n个骰子的点数 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Two Sum | 两数之和 |
2 | The first character that appears only once | 第一个只出现一次的字符 |
3 | Repeating numbers in the array | 数组中重复的数字 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Sliding Window Maximum | 滑动窗口最大值 |
2 | The maximum value of the queue | 队列的最大值 |
3 | And is a sequence of consecutive positive Numbers for S | 和为s的连续正数序列 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Fibonacci Number | 斐波那契数 |
2 | Construct Binary Tree From Preorder And Inorder Traversal | 从前序与中序遍历序列构造二叉树 |
3 | Powx N | Pow(x, n) |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Arrangement of strings | 字符串的排列 |
2 | Robot's range of motion | 机器人的运动范围 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | The smallest k number | 最小的k个数 |
2 | Majority Element | 多数元素 |
3 | convert binary search tree to sorted doubly linked list | 二叉搜索树与双向链表 |
序号 | 题目(解答链接) | LeetCode(原题链接) |
---|---|---|
1 | Find Median From Data Stream | 数据流的中位数 |
序号 | 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 | 题解 |
- 单调栈,单调队列和优先队列
- 散列表(哈希表)
- 字符串匹配(BF/RK/BM/KMP/Trie树/AC自动机)
- 树(AVL/红黑树/B/B+/2-3/堆/堆排序)
- 图(关键路径/最小生成树/最短路径/拓扑排序)
- 其他(跳表/并查集/BitMap/Bloom filter/LRU)
TODO:
附:
- 性能对比图
- 如果需要经常添加或删除结点,链表可能是一个不错的选择。
- 如果需要经常按索引访问元素,数组可能是比链表更好的选择。
- 十大排序算法比较图
- 算法知识体系图
- 常用算法时间复杂度