目录

字符串

题目 内容 解法
3 Longest Substring Without Repeating Characters 无重复字符的最长子串 [m] 两个指针,滑动窗口
22 Generate Parentheses 有效括号数目[m] 回溯
415 Add Strings 字符串相加[e] 逐个相加
43 Multiply Strings 字符串相乘[m] 逐个相乘的方法
937 Reorder Data in Log Files 重新排列日志文件 split_join_localeCompare
20 Valid Parentheses 判断有效括号[e] stack map
76 minimum Window Substring 寻找包含一个字符串中所有字符的最小子串[h] 滑动窗口法
151 Reverse Words in a String 反转字符串单词[m] api_正则
468 Validate IP Address 验证IP的有效性[m] 正则_遍历

js数据结构

题目 内容 解法
146 LRU Cache 实现LRU缓存[e] map_双向链表+hash
69 Sqrt(x) 求根号x [e] 对数二分牛顿

动态规划

题目 内容 解法
5 Longest Palindromic Substring 求字符串的最长回文串 expandRoundCenter or dp
10 Regular Expression Matching
32 Longest Valid Parentheses
42 Trapping Rain Water 接雨水[h] dp 存储元素左边的最大值和右边的最大值,双指针
44 Wildcard Matching
53 Maximum Subarray 求子数组的最大和[e] 一维数组动态规划
62 Unique Paths 不同路径 [m] dp_组合数学
63 Unique Paths II
64 Minimum Path Sum 二维数组的最短路径 动态规划累加实现
70 Climbing Stairs 小青蛙爬楼梯多少种可能 动态规划与矩阵快速幂求解?
72 Edit Distance
85 Maximal Rectangle
87 Scramble String
91 Decode Ways 数字解码为字符串的可能情况 各种情况下的递推关系,动态规划
97 Interleaving String
115 Distinct Subsequences
120 Triangle
121 Best Time to Buy and Sell Stock 数组最大差值(股票最大收益) 动态规划
Best Time to Buy and Sell Stock III

二叉树

题目 内容 解法
94 Binary Tree Inorder Traversal 中序遍历 维护栈,push_l.else_pop_r
95 Unique Binary Search Trees II 升序数组可生成的BST数组[m] 递归
96 Unique Binary Search Trees 有序数组可生成的BST个数[m] 动态规划
98 Validate Binary Search Tree 是否 BST[m] 递归.中序遍历
99 Recover Binary Search Tree 恢复BST[h] 中序遍历_交换
100 Same Tree 两个树是否是同一个树[e] 递归
101 Symmetric Tree 二叉树是否对称[e] 递归
102 Binary Tree Level Order Traversal 层序遍历[m] 队列实现
103 Binary Tree Zigzag Level Order Traversal z形层序遍历[m] 偶数行翻转
104 Maximum Depth of Binary Tree 二叉树深度[e] 递归
105 Construct Binary Tree from Preorder and Inorder Traversal 根据前序遍历和中序遍历构造二叉树[m] 递归实现
106 Construct Binary Tree from Inorder and Postorder Traversal 中序和后序遍历重建二叉树[m] 递归
107 Binary Tree Level Order Traversal II 底部层序遍历[e] 层序遍历后翻转一下
108Convert Sorted Array to Binary Search Tree 升序数组转换成高度平衡 BST[e] 递归_切分
109 Convert Sorted List to Binary Search Tree
110 Balanced Binary Tree 是否平衡二叉树[e] 递归
111 Minimum Depth of Binary Tree 二叉树最小深度[e] 递归
112Path Sum 是否根节点到叶节点所有数字和等于给定值[e] 递归
113 Path Sum II 和为指定值的二叉树路径数组[m] 回溯pop
114 Flatten Binary Tree to Linked List 摊平 BST 左子树右子节点=根节点右节点
116 Populating Next Right Pointers in Each Node 二叉树next指向右边节点[m] 递归
117 Populating Next Right Pointers in Each Node II 没有通过 递归实现
124 Binary Tree Maximum Path Sum 二叉树最大路径和 [h] 递归,r_r.val+max
144 Binary Tree Preorder Traversal 前序遍历 维护栈,pop_r_l
145 Binary Tree Postorder Traversal 后序遍历 维护栈,pop_unshift_l_r
199 Binary Tree Right Side View 二叉树右视图[m] 层序遍历
226 Invert Binary Tree 二叉树翻转[e] 递归实现与迭代实现
129 Sum Root to Leaf Numbers 所有根节点到叶子节点组成的数字之和[m] 深度优先遍历& 回溯
173 Binary Search Tree Iterator 二叉搜索树迭代器[m f101] 中序遍历或者generator实现
236 Lowest Common Ancestor of a Binary Tree 最近公共祖先[m] 判决条件_dfs
297 Serialize and Deserialize Binary Tree 二叉树序列化与反序列化[h] bfs_输出字符串_转成树
450 Delete Node in a BST 删除二叉树的节点[m] 前驱_后继节点遍历
543 Diameter of Binary Tree 二叉树的直径[m] dfs 递归
700 Search in a Binary Search Tree bst查找元素[e] 递归/迭代

数组

题目 内容 解法
1 Two Sum 数组中两个和等于指定值的索引[e] hash
4 Median of Two Sorted Arrays 两个有序数组的中位数[h] 合并两个有序数组类似解法
11 Container With Most Water 容器最大装水数[e] 双指针法
15 3Sum 数组中三个元素和为0[m] 排序+双指针
26 Remove Duplicates from Sorted Array 移除数组中重复元素 双指针
31 Next Permutation 全排列的下一个升序元素 [m] 从右找到第一对升序元素交换
33 Search in Rotated Sorted Array 搜索旋转排序数组[m] 二分法变形
34 Find First and Last Position of Element in Sorted Array
41 First Missing Positive 找到遗失的正数[h]未解决 更改数组实现
46 Permutations 全排列[m] 回溯_交换_flag
48 Rotate Image 旋转二维数组[m] 寻找递归关系
53 Maximum Subarray 求一个数组的最大连续子数组和[e] dp
54 Spiral Matrix 顺时针输出数组元素[m] 旋转_指针
56 Merge Intervals 合并间隔[m] 排序_for_of
59 Spiral Matrix II 生成顺时针数组[m] 指针
74 Search a 2D Matrix 二维数组中查找元素[m] 行列合并后二分
79 Word Search 单词是否连续出现在网格中[m] 回溯法
80 Remove Duplicates from Sorted Array II 以指定数目移除有序数组中的重复元素 双指针法
81 Search in Rotated Sorted Array II
88 Merge Sorted Array 合并两个有序数组 尾部指针法
89 Gray Code 格雷编码[m] 动态规划_异或计算
118 Pascal's Triangle 杨辉三角[e] 遍历2次
119 Pascal's Triangle II 杨辉三角变形[e] 两个数组遍历
128 Longest Consecutive Sequence 最长连续序列[h] map实现
200 Number of Islands 求孤岛数目[m] dfs
207 Course Schedule 是否能够完成课程学习[m] 图_bfs_dfs
210 Course Schedule II 课程表的可能[m] 图_bfs_dfs
215 Kth Largest Element in an Array 选择数组中第k大元素 建堆与部分快速排序
238 Product of Array Except Self 数组除自身元素的乘积[m] triple / 自身
240 Search a 2D Matrix II 二维矩阵查找[m] 左下角search
253 Meeting Rooms II 合并间隔[m] 分离排序判决
287 Find the Duplicate Number 找到数组中的重复元素[m] 二分按位与快慢指针
295 Find Median from Data Stream 寻找数据流的中位数[h] 二分_建堆
300 Longest Increasing Subsequence 最长升序数组[m] [dp_二分/di
349 Intersection of Two Arrays 两个数组的重复数组[e] 两个集合
362 Design Hit Counter 设计计数器[m] queue,两个数组
384 Shuffle an Array 打乱数组[m] 随机下标交换
493 Median of Two Sorted Arrays 求数组逆序对[m] 归并
912 Sort an Array 数组排序 各排序算法及复杂度分析
560 Subarray Sum Equals K 和为k的连续子数组数目[m] 前缀和_map(0,1)

链表

题目 内容 解法
2 Add Two Numbers 链表相加 直接相加, dummy标志
19 Remove Nth Node From End of List
21 Merge Two Sorted Lists 直接比较
23 Merge k Sorted Lists k个有序链表合并 两个有序连接进行分治或遍历
25 Reverse Nodes in k-Group k个一组反转链表[m] 以反转链表为基础做遍历
61 Rotate List
82 Remove Duplicates from Sorted List II
83 Remove Duplicates from Sorted List
86 Partition List
92. Reverse Linked List II 在指定区间内反转链表 指针
109 Convert Sorted List to Binary Search Tree
114 Flatten Binary Tree to Linked List
138 Copy List with Random Pointer 复制一个带有随机指针的链表[m] map保存复制过的节点
141 Linked List Cycle
142 Linked List Cycle II
148 Sort List 链表排序[m] 归并排序
160 Intersection of Two Linked Lists
206 Reverse Linked List 翻转链表 临时变量法
328 Odd Even Linked List

动态规划的思想

动态规划算法的基本思想:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解,对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并存下,求解问题的时候直接读取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容