随笔分类 -  leetcode

1
摘要:LeetCode 216.组合总和III 分析1.0 回溯问题 组合总和sum == n 时以及path中元素个数 == k 时,res.add(new path) 返回后递归删除掉当前值 class Solution { public List<List<Integer>> res = new A 阅读全文
posted @ 2023-02-24 15:11 cupxu 阅读(19) 评论(0) 推荐(0) 编辑
摘要:基础知识 回溯法解决的问题都可以抽象为树形结构,集合的大小就构成了树的宽度,递归的深度构成的树的深度 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; back 阅读全文
posted @ 2023-02-20 10:23 cupxu 阅读(16) 评论(0) 推荐(0) 编辑
摘要:LeetCode 669. 修剪二叉搜索树 分析1.0 递归遍历树时删除符合条件(不在区间中)的节点-如何遍历如何删除 如果当前节点大于范围,递归左树,反之右树 当前节点不在范围内,删除它,把它的子树返回给上一层 class Solution { public TreeNode trimBST(Tr 阅读全文
posted @ 2023-02-19 10:25 cupxu 阅读(11) 评论(0) 推荐(0) 编辑
摘要:LeetCode 235. 二叉搜索树的最近公共祖先 分析1.0 二叉搜索树根节点元素值大小介于子树之间,所以只要找到第一个介于他俩之间的节点就行 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNod 阅读全文
posted @ 2023-02-16 12:42 cupxu 阅读(15) 评论(0) 推荐(0) 编辑
摘要:LeetCode 530.二叉搜索树的最小绝对差 分析1.0 二叉搜索树,中序遍历形成一个升序数组,节点差最小值一定在中序遍历两个相邻节点产生 ✡✡✡ 即 双指针思想在树遍历中的应用 class Solution { TreeNode pre;// 记录上一个遍历的结点 int result = I 阅读全文
posted @ 2023-02-07 21:48 cupxu 阅读(18) 评论(0) 推荐(0) 编辑
摘要:LeetCode 654.最大二叉树 分析1.0 if(start == end) return节点索引 locateMaxNode(arr,start,end) new root = 最大索引对应节点 max.right = 最大节点右侧子数组的最大值 要保证能够递归 max.left = 最大节 阅读全文
posted @ 2023-02-07 00:15 cupxu 阅读(15) 评论(0) 推荐(0) 编辑
摘要:LeetCode 513.找树左下角的值 分析1.0 二叉树的 最底层 最左边 节点的值,层序遍历获取最后一层首个节点值,记录每一层的首个节点,当没有下一层时,返回这个节点 class Solution { ArrayDeque<TreeNode> queue = new ArrayDeque(); 阅读全文
posted @ 2023-02-05 15:00 cupxu 阅读(13) 评论(0) 推荐(0) 编辑
摘要:LeetCode 110.平衡二叉树 分析1.0 求左子树高度和右子树高度,若高度差>1,则返回false,所以我递归了两遍 class Solution { public boolean isBalanced(TreeNode root) { if(root == null){ return tr 阅读全文
posted @ 2023-02-04 17:44 cupxu 阅读(4) 评论(0) 推荐(0) 编辑
摘要:基础知识 二叉树的多种遍历方式,每种遍历方式各有其特点 LeetCode 104.二叉树的最大深度 分析1.0 往下遍历深度++,往上回溯深度-- class Solution { int deep = 0, max = 0; public int maxDepth(TreeNode root) { 阅读全文
posted @ 2023-02-01 23:27 cupxu 阅读(10) 评论(0) 推荐(0) 编辑
摘要:层序遍历 /** * 二叉树的层序遍历 */ class QueueTraverse { /** * 存放一层一层的数据 */ public List<List<Integer>> resList = new ArrayList<>(); public List<List<Integer>> lev 阅读全文
posted @ 2023-01-29 13:15 cupxu 阅读(24) 评论(0) 推荐(0) 编辑
摘要:基础知识 二叉树基础知识 二叉树多考察完全二叉树、满二叉树,可以分为链式存储和数组存储,父子兄弟访问方式也有所不同,遍历也分为了前中后序遍历和层次遍历 Java定义 public class TreeNode { int val; TreeNode left; TreeNode right; Tre 阅读全文
posted @ 2023-01-29 08:40 cupxu 阅读(13) 评论(0) 推荐(0) 编辑
摘要:基础知识 ArrayDeque deque = new ArrayDeque(); /* offerFirst(E e) 在数组前面添加元素,并返回是否添加成功 offerLast(E e) 在数组后天添加元素,并返回是否添加成功 pollFirst()删除第一个元素,并返回删除元素的值,如果元素为 阅读全文
posted @ 2023-01-26 15:55 cupxu 阅读(11) 评论(0) 推荐(0) 编辑
摘要:基础知识 String StringBuilder 操作 public class StringOperation { int startIndex; int endIndex; { //初始容量为16个字符 主要做增删查改 索引包头不包尾 StringBuilder sb = new String 阅读全文
posted @ 2023-01-25 11:56 cupxu 阅读(7) 评论(0) 推荐(0) 编辑
摘要:基础知识 使用ArrayDeque 实现栈和队列 stack push pop peek isEmpty() size() queue offer poll peek isEmpty() size() LeetCode 232.用栈实现队列 分析1.0 队列先进先出,栈先进后出,每次获得栈中的最后一 阅读全文
posted @ 2023-01-24 10:34 cupxu 阅读(15) 评论(0) 推荐(0) 编辑
摘要:LeetCode 28. 实现 strStr() 牢记一点:next[i] 元素表示【0,i】子串的最长相等前后缀个数,也是模式串与主串匹配不相等时模式串的下一个比较索引 分析1.0 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串。 后缀是指不包含第一个字符的所有以最后一个字符结尾的连续 阅读全文
posted @ 2023-01-20 15:07 cupxu 阅读(19) 评论(0) 推荐(1) 编辑
摘要:基础知识 // String -> char[] char[] string=s.toCharArray(); // char[] -> String String.valueOf(string) 注意replace replaceAll区别,都是全局匹配替换,不过replaceAll是正则匹配 L 阅读全文
posted @ 2023-01-19 16:21 cupxu 阅读(18) 评论(0) 推荐(0) 编辑
摘要:LeetCode 454.四数相加II 分析1.0 这个最直接暴力法,不过过于暴力了,害怕.jpg 失误 读题理解失误:题目要求的是四元组的个数,读完题到我这里成了输出四元组,悲哉 分析2.0 记录有多少个可能为0的四元组就行了,两层for循环每次的下标索引都是不一样的,于是遍历前两组将元素和加入M 阅读全文
posted @ 2023-01-18 23:08 cupxu 阅读(17) 评论(0) 推荐(0) 编辑
摘要:基础知识 哈希 常见的结构(不要忘记数组) 数组 set (集合) map(映射) 注意 哈希冲突 哈希函数 LeetCode 242 分析1.0 HashMap<Character, Integer> 记录字符元素及其个数,再以字符序列对key进行排序,比较两个Map是否一致或者是遍历Map1的时 阅读全文
posted @ 2023-01-17 12:18 cupxu 阅读(20) 评论(0) 推荐(0) 编辑
摘要:基础知识 记录一下栈实现及操作 public class ArrayDequeStack { public void main() { ArrayDeque stack = new ArrayDeque(); // 大小 System.out.println(stack.size()); // 依次 阅读全文
posted @ 2023-01-16 11:30 cupxu 阅读(30) 评论(0) 推荐(0) 编辑
摘要:基础知识 数据结构初始化 // 链表节点定义 public class ListNode { // 结点的值 int val; // 下一个结点 ListNode next; // 节点的构造函数(无参) public ListNode() { } // 节点的构造函数(有一个参数) public 阅读全文
posted @ 2023-01-13 23:11 cupxu 阅读(31) 评论(0) 推荐(0) 编辑

1