leetcode
文章平均质量分 99
刷题
司欣然
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【急】手撕代码高频
25. K 个一组翻转链表 9 3. 无重复字符的最长子串 8 102. 二叉树的层序遍历 6 124. 二叉树中的最大路径和 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 · 1564 阅读 · 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 · 302 阅读 · 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 · 343 阅读 · 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 · 985 阅读 · 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 · 901 阅读 · 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 · 273 阅读 · 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 · 173 阅读 · 0 评论 -
【庚】字符串
290. 单词规律 是原创 2020-07-03 10:13:52 · 187 阅读 · 0 评论 -
【辛】哈希表
文章目录1. 数组中两个数的和为给定值2. 判断数组是否含有重复元素3. 最长和谐序列4. 最长连续序列 哈希表使用 O(N) 空间复杂度存储数据,并且以 O(1) 时间复杂度求解问题。 Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中。如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在。例如对于只有小写字符的元素,就可以用一个长度为 26 的布尔数组来存储一个字符集合,使得空间复杂度降低为 O(1)。 Java 中的 HashMap 主要原创 2020-07-04 23:12:17 · 196 阅读 · 0 评论 -
【壬】二分
文章目录1. 求开方2. 大于给定元素的最小元素3. 有序数组的 Single Element4. 第一个错误的版本5. 旋转数组旋转数组的最小数字6. 查找区间 正常实现** Input : [1,2,3,4,5] key : 3 return the index : 2 public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { in原创 2020-07-04 23:13:46 · 144 阅读 · 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 · 953 阅读 · 0 评论
分享