
leetcode
文章平均质量分 99
刷题
司欣然
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【急】手撕代码高频
25. K 个一组翻转链表 93. 无重复字符的最长子串 8102. 二叉树的层序遍历 6124. 二叉树中的最大路径和 6字节跳动 后端 206. 反转链表 6字节跳动 后端 15. 三数之和 6字节跳动 后端 146. LRU缓存机制 6字节跳动 后端 215. 数组中的第K个最大元素 5字节跳动 后端 2. 两数相加 5字节跳动 后端 141. 环形链表 5字节跳动 后端 234. 回文链表 5字节跳动 后端 155. 最小栈 4字节跳动 后端 105. 从前序与中序遍历序列原创 2020-07-20 15:46:55 · 1545 阅读 · 0 评论 -
【甲】贪心,动规
二维221. 最大正方形使用二维dp,dp[i][j]表示以此为右下角的最大的正方形的边长,然后从上向下循环一下,很自然的思路。比较难想到的是递推公式,即第ij的元素是怎么通过左和上的元素求得。绿色的方块就是根据左和上的两个方块public class n221 { public int maximalSquare(char[][] matrix) { //动态规划: int maxLen = 0; if (matrix == null ||原创 2020-06-24 21:30:10 · 285 阅读 · 0 评论 -
【乙】树与图
树的结构问题大多会用上递归,因为树具有高度的自相似性class Solution { public int countNodes(TreeNode root) { if(root==null) return 0; return countNodes(root.left) + countNodes(root.right) + 1; }}树的遍历...原创 2020-06-24 21:44:49 · 335 阅读 · 0 评论 -
【丙】搜索,回溯
文章目录BFS1. 计算在网格中从原点到特定点的最短路径长度2. 组成整数的最小平方数数量3. 最短单词路径DFS1. 查找最大的连通面积2. 矩阵中的连通分量数目(岛屿数量)2.1 岛屿周长3. 好友关系的连通分量数目4. 填充封闭区域5. 能到达的太平洋和大西洋的区域6.被围绕的区域单词接龙矩阵中的最长递增路径字符串解码克隆图括号生成回溯问题1. 数字键盘组合2. IP 地址划分3. 在矩阵中寻找字符串4. 输出二叉树中所有从根到叶子的路径5. 普通全排列6. 含有相同元素求排列第k个排列7. 组合8.原创 2020-09-11 20:37:30 · 963 阅读 · 0 评论 -
【丁】数组,序列,指针
数组228. 汇总区间双指针法:i与i+1比较,不满足则计算结果,start更新注意最后一个元素一定要计算结果class Solution { public List<String> summaryRanges(int[] nums) { List<String> res = new ArrayList<>(); //记录区间起和cur int start = 0; for (int i原创 2020-07-01 20:02:31 · 893 阅读 · 0 评论 -
【戊】链表
链表合并合并两个有序链表可以使用递归或迭代private ListNode merge2Lists(ListNode l1, ListNode l2) { if (l1 == null) { return l2; } if (l2 == null) { return l1; } if (l1.val < l2.val) { l1.next = merge2Lists(l1.next, l2);原创 2020-06-25 16:57:27 · 242 阅读 · 0 评论 -
【己】栈,堆,队列
栈逆波兰表达式求解150. 逆波兰表达式求值注意:不需要对栈进行判断,最后栈中的值一定是所求值每个case后记得加break public int evalRPN(String[] tokens) { //遇到符号弹出来计算,然后在放进去,直到栈不为空或者 Stack<Integer> stack = new Stack<>(); int res = 0; for (int i = 0; i &l原创 2020-06-25 09:45:06 · 159 阅读 · 0 评论 -
【庚】字符串
290. 单词规律是原创 2020-07-03 10:13:52 · 168 阅读 · 0 评论 -
【辛】哈希表
文章目录1. 数组中两个数的和为给定值2. 判断数组是否含有重复元素3. 最长和谐序列4. 最长连续序列哈希表使用 O(N) 空间复杂度存储数据,并且以 O(1) 时间复杂度求解问题。Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中。如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在。例如对于只有小写字符的元素,就可以用一个长度为 26 的布尔数组来存储一个字符集合,使得空间复杂度降低为 O(1)。Java 中的 HashMap 主要原创 2020-07-04 23:12:17 · 185 阅读 · 0 评论 -
【壬】二分
文章目录1. 求开方2. 大于给定元素的最小元素3. 有序数组的 Single Element4. 第一个错误的版本5. 旋转数组旋转数组的最小数字6. 查找区间正常实现**Input : [1,2,3,4,5]key : 3return the index : 2public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { in原创 2020-07-04 23:13:46 · 135 阅读 · 0 评论 -
【癸】数学和数据结构的实现
数学问题多多积累吧坐标223. 矩形面积1.什么时候无重叠?四种情况2.有重叠的边界怎么算?比如左边界:就是两个左下角横坐标的最小值public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { //求第一个矩形的面积 int length1 = C - A; int width1 = D - B; int area1 = length1 * width1;原创 2020-06-24 22:06:21 · 937 阅读 · 0 评论