LeetCode 热题 HOT 100:二叉树专题

2023-11-09

LeetCode 热题 HOT 100:https://leetcode.cn/problem-list/2cktkvj/



94. 二叉树的中序遍历 ---- 递归与非递归

题目链接:https://leetcode.cn/problems/binary-tree-inorder-traversal/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

递归方式:

class Solution {
    List<Integer> list = new ArrayList<>();

    public List<Integer> inorderTraversal(TreeNode root) {
        InOrder(root);
        return list;
    }

    public void InOrder(TreeNode root){
        if(root != null){
            InOrder(root.left);
            list.add(root.val);
            InOrder(root.right);
        }
    }
}

非递归方式:

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        Deque<TreeNode> stack = new LinkedList<>(); // 双端队列模拟栈
        List<Integer> list = new ArrayList<>();
        TreeNode p = root;
        while(p != null || !stack.isEmpty()){
            if(p != null){
                stack.push(p);
                p = p.left;
            }else{
                p = stack.pop();
                list.add(p.val);
                p = p.right;
            }
        }
        return list;
    }
}

补充:144. 二叉树的前序遍历 ---- 递归与非递归

题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/

递归做法:

class Solution {
    List<Integer> list = new ArrayList<>();

    public List<Integer> preorderTraversal(TreeNode root) {
        preOrder(root);
        return list;
    }

    public void preOrder(TreeNode root){
        if(root != null){
            list.add(root.val);
            preOrder(root.left);
            preOrder(root.right);
        }
    }
}

非递归做法:

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        Deque<TreeNode> stack = new LinkedList<>(); // 双端队列模拟栈
        List<Integer> list = new ArrayList<>();
        TreeNode p = root;
        while(p != null || !stack.isEmpty()){
            if(p != null){
                list.add(p.val);
                stack.push(p);
                p = p.left;
            }else{
                p = stack.pop();
                p = p.right;
            }
        }
        return list;
    }
}

补充:145. 二叉树的后序遍历 ---- 递归与非递归

题目链接:https://leetcode.cn/problems/binary-tree-postorder-traversal/description/

递归做法:

class Solution {
    List<Integer> list = new ArrayList<>();

    public List<Integer> postorderTraversal(TreeNode root) {
        postOrder(root);
        return list;
    }

    public void postOrder(TreeNode root){
        if(root != null){
            postOrder(root.left);
            postOrder(root.right);
            list.add(root.val);
        }
    }
}

非递归做法:

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        Deque<TreeNode> stack = new LinkedList<>();
        TreeNode p, r;
        p = root;
        r = null;
        while(p != null || !stack.isEmpty()){
            if(p != null){ // 走到最左边
                stack.push(p);
                p = p.left;
            }else{ // 向右
                p = stack.peek(); // 得到栈顶元素
                if(p.right != null && p.right != r){ // 右子树存在,且未访问
                    p = p.right;
                }else{ // 否则弹出节点并访问
                    p = stack.pop();
                    list.add(p.val);
                    r = p; // 记录最近访问节点
                    p = null; // 节点访问后,重置 p
                }
            }
        }
        return list;
    }
}

96. 不同的二叉搜索树

题目链接:https://leetcode.cn/problems/unique-binary-search-trees/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

动态规划:

  • 假设 n 个节点存在二叉搜索树的个数是 G(n),令 f(i) 为以 i 为根的二叉排序树的个数,则:G(n) = f(1) + f(2) + … + f(n-1) + f(n)
  • i 为根节点时,由于是二叉搜索树,则其左子树节点个数为 i-1 个,右子树节点为 n-i 个,得:f(i) = G(i-1) * G(n-i)
  • 综上可得卡特兰数的公式:
    G(n) = f(1) + f(2) + … + f(n-1) + f(n)
        = G(0) * G(n-1) + G(1) * G(n-2) + … + G(n-2) * G(1) + G(n-1) * G(0)
class Solution {
    public int numTrees(int n) {
        int[] dp = new int[n+1]; // dp[i] 代表 i 个节点存在二叉搜索树的个数
        dp[0] = 1;
        dp[1] = 1;

        for(int i = 2; i <= n; i ++){
            for(int j = 0; j < i; j ++){
                dp[i] += dp[j]*dp[i-1-j];
            }
        }
        return dp[n];
    }
}

98. 验证二叉搜索树

题目链接:https://leetcode.cn/problems/validate-binary-search-tree/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

递归中序遍历:

class Solution {
    long max = Long.MIN_VALUE;
    public boolean isValidBST(TreeNode root) {
        if(root == null){
            return true;
        }
        if(!isValidBST(root.left)){
            return false;
        }
        if(root.val <= max){
            return false;
        }else{
            max = root.val;
        }
        return isValidBST(root.right);
    }
}

非递归中序遍历:

class Solution {
    public boolean isValidBST(TreeNode root) {
        Deque<TreeNode> stack = new LinkedList<>(); // 双端队列模拟栈
        List<Integer> list = new ArrayList<>();
        TreeNode p = root;
        long max = Long.MIN_VALUE;
        while(p != null || !stack.isEmpty()){
            if(p != null){
                stack.push(p);
                p = p.left;
            }else{
                p = stack.pop();
                if (p.val <= max){
                   return false;
                }else{
                    max = p.val;
                }
                list.add(p.val);
                p = p.right;
            }
        }
        return true;
    }
}

101. 对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null){
            return false;
        }
        return recur(root.left, root.right);
    }

    public boolean recur(TreeNode l, TreeNode r){
        if(l == null && r == null){
            return true;
        }
        if(l == null || r == null || l.val != r.val){
            return false;
        }
        return recur(l.left, r.right) && recur(l.right, r.left);
    }
}

102. 二叉树的层序遍历

题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

双端队列模拟队列实现层序遍历:

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        Deque<TreeNode> queue = new LinkedList<>();
        if(root != null){
            queue.push(root);
        }
        while(!queue.isEmpty()){
            List<Integer> list = new ArrayList<>();
            for(int i = queue.size(); i > 0; i --){ // // 注意避坑点:queue.size(),在出队时会发生变化,因此实现用 i 记录队列长度,倒序循环
                TreeNode p = queue.remove();
                list.add(p.val);
                if(p.left != null){
                    queue.add(p.left);
                }
                if(p.right != null){
                    queue.add(p.right);
                }
            }
            res.add(list);
        }
        return res;
    }
}

104. 二叉树的最大深度

题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

深搜DFS:

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        int leftDepth = maxDepth(root.left);
        int rightDepth = maxDepth(root.right);
        return Math.max(leftDepth, rightDepth) + 1;
    }
}

广搜BFS:

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        Deque<TreeNode> queue = new LinkedList<>();
        TreeNode p = root;
        int depth = 0;
        queue.add(root);
        while(!queue.isEmpty()){
           	 int size = queue.size();
             for(int i = queue.size(); i > 0; i --){
                p = queue.remove();
                if(p.left != null){
                    queue.add(p.left);
                }
                if(p.right != null){
                    queue.add(p.right);
                }
            }
            depth++;
        }
        return depth;
    }
}

105. 从前序与中序遍历序列构造二叉树

题目链接:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) { // 先序,中序
        return build(preorder, 0, preorder.length-1, inorder, 0, inorder.length-1);
    }

    public TreeNode build(int[] preorder, int lpre, int rpre, int[] inorder, int lmid, int rmid){ // 先序左边界、右边界,中序左边界、右边界
        if(lmid>rmid || lpre>rpre){
            return null;
        }
        TreeNode node = new TreeNode(preorder[lpre]);
        int fa = lpre; // fa代表中序遍历数组中的根节点的索引
        for(int i = lmid; i <= rmid; i ++){
            if(inorder[i] == preorder[lpre]){
                fa = i;
                break;
            }
        }
        int len = fa-lmid; // 左子树的长度
        // 先序(根左右):左边界+1、左边界+长度,中序(左根右):左边界、根节点位置-1
        node.left = build(preorder, lpre+1, lpre+len, inorder, lmid, fa-1);
        // 先序(根左右):左边界+长度+1、右边界,中序(左根右):根节点位置+1、右边界
        node.right = build(preorder, lpre+len+1, rpre, inorder, fa+1, rmid);
        return node;
    }
}

参考思路:团体程序设计天梯赛-练习集 L2-011 玩转二叉树 (25分) 先序中序建树 思路详解


114. 二叉树展开为链表

题目链接:https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

原始做法: 将节点前序遍历存储在集合当中,然后对集合中的节点依次展开。

class Solution {
    public void flatten(TreeNode root) {
        Deque<TreeNode> stack = new LinkedList<>();
        TreeNode p = root;
        List<TreeNode> list = new LinkedList<>();

        while(p!=null||!stack.isEmpty()){
            if(p!=null){
                stack.push(p);
                list.add(p);
                p = p.left;
            }else{
                p = stack.pop();
                p = p.right;
            }
        }
        TreeNode q = root;
        for (int i = 1; i < list.size(); i++) {
            q.left = null;
            q.right = list.get(i);
            q = list.get(i);
        }
    }
}

优化后做法:利用先序遍历 根左右 的特点。将根的右侧指向左子树,左子树的最右节点指向原来根的右子树,并将左子树置为空

class Solution {
    public void flatten(TreeNode root) {
        TreeNode curr = root; // 当前节点指向根
        while(curr != null){
            if(curr.left != null){
                TreeNode next = curr.left; // 左子树
                TreeNode pre = next;
                while(pre.right != null){ // 查询左子树的最右节点
                    pre = pre.right;
                }
                pre.right = curr.right; // 最右节点的右指针指向当前节点的右子树
                curr.right = next; // 当前节点的右子树指向当前节点的左子树的根
                curr.left = null; // 当前节点左子树置为空
            }
            curr = curr.right;
        }
    }
}

124. 二叉树中的最大路径和

题目链接:https://leetcode.cn/problems/binary-tree-maximum-path-sum/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

  • 二叉树 abc,a 是根结点(递归中的 root),bc 是左右子结点(代表其递归后的最优解)。最大的路径,可能的路径情况:
       a
    /  \
      b    c
    ① b + a + c。
    ② b + a + a 的父结点。(需要再次递归)
    ③ a + c + a 的父结点。(需要再次递归)
  • 其中情况 1,表示如果不联络父结点的情况,或本身是根结点的情况。这种情况是没法递归的,但是结果有可能是全局最大路径和,因此可以在递归过程中通过比较得出。
  • 情况 2 和 3,递归时计算 a+b 和 a+c,选择一个更优的方案返回,也就是上面说的递归后的最优解。
class Solution {
    int max = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) {
        if(root == null){
            return 0;
        }
        dfs(root);
        return max;
    }

    /**
     * 返回经过root的单边分支最大和, 即 Math.max(root, root+left, root+right)
     */
    public int dfs(TreeNode root){
        if(root == null){
            return 0;
        }
        // 计算左子树最大值,左边分支如果为负数还不如不选择
        int leftMax = Math.max(0, dfs(root.left));
        // 计算右子树最大值,右边分支如果为负数还不如不选择
        int rightMax = Math.max(0, dfs(root.right));

        // left->root->right 作为路径与已经计算过历史最大值做比较
        max = Math.max(max, leftMax + root.val + rightMax);

        // 返回经过root的单边最大分支给当前root的父节点计算使用
        return root.val + Math.max(leftMax, rightMax);
    }
}

参考:【二叉树中的最大路径和】递归,条理清晰


226. 翻转二叉树

题目链接:https://leetcode.cn/problems/invert-binary-tree/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

递归做法:

class Solution {
    public TreeNode invertTree(TreeNode root) {
        overturnTree(root);
        return root;
    }

    public void overturnTree(TreeNode root){
        if(root == null){
            return;
        }
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;

        overturnTree(root.left);
        overturnTree(root.right);
    }
}

非递归做法: 利用层次遍历,在每层放入队列之后,交换左右节点。

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null){
            return null;
        }
        Deque<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            TreeNode p = queue.remove();
            if(p.left != null){
                queue.add(p.left);
            }
            if(p.right != null){
                queue.add(p.right);
            }
            TreeNode tmp = p.left;
            p.left = p.right;
            p.right = tmp;
        }
        return root;
    }
}

538. 把二叉搜索树转换为累加树

题目链接:https://leetcode.cn/problems/convert-bst-to-greater-tree/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

递归做法:

class Solution {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        order(root);
        return root;
    }

    public void order(TreeNode root){
        if(root!=null){
            order(root.right);
            sum += root.val;
            root.val = sum;
            order(root.left);
        }
    }
}

非递归做法:

class Solution {
    public TreeNode convertBST(TreeNode root) {
        Deque<TreeNode> stack = new LinkedList<>();
        TreeNode p = root;
        int sum = 0;
        while(!stack.isEmpty() || p != null){ // 反中序遍历
            if(p!=null){
                stack.push(p);
                p = p.right;
            }else{
                p = stack.pop();
                sum += p.val;
                p.val = sum;
                p = p.left;
            }
        }
        return root;
    }
}

543. 二叉树的直径

题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

左右节点深度加一起就是最大路径:

class Solution {
    int max = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        if(root == null){
            return 0;
        }
        maxDepth(root);
        return max;
    }

    public int maxDepth(TreeNode root){
        if(root == null){
            return 0;
        }
        int leftDepth = maxDepth(root.left);
        int rightDepth = maxDepth(root.right);
        max = Math.max(max, leftDepth + rightDepth);  // 左右节点深度加一起就是最大路径
        return Math.max(leftDepth, rightDepth) + 1;
    }
}

617. 合并二叉树

题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/?envType=featured-list&envId=2cktkvj?envType=featured-list&envId=2cktkvj

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        return merge(root1, root2);
    }

    public TreeNode merge(TreeNode root1, TreeNode root2){
        if(root1 == null && root2 == null){
            return null;
        }else if(root1 == null){
            return root2;
        }else if(root2 == null){
            return root1;
        }else{
            root1.val += root2.val;
            root1.left = merge(root1.left, root2.left);
            root1.right = merge(root1.right, root2.right);
            return root1;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 热题 HOT 100:二叉树专题 的相关文章

  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 快速排序-递归与分治

    include
  • 服务器虚拟化和桌面虚拟化

    服务器虚拟化和桌面虚拟化依托的都是KVM架构 两者的底层的东西是一样的 只不过是人为的将这个底层系统二次开发成不同的系统版本 有些功能做了限制 有些做了优化 这样的好处是 不同的场景可以使用不同的虚拟化系统 更好的满足客户的需求和发挥不同系
  • 织梦搜索时因关键词标红而导致页面样式错乱的解决方法

    使用织梦默认的搜索功能时 发现搜索某一关键词时 搜索展示页面样式错乱了 经过排查 确定是关键词标红引起的 出现此问题的原因 织梦搜索页面会将搜索关键词进行标红 字体颜色改为红色 处理 在代码中体现出来就是将关键词文字替换为套上font标签的
  • 对华为路由器配置DHCP实现IP地址的自动分配

    目录 0 题目 1 首先按照题意建立如下拓扑图 并划分子网 2 为路由器AR1进行基础设置 1 将系统名称改为r1 2 设置超时时长为0 永不超时 3 为路由器AR1两个接口配置IP地址 1 GE 0 0 0 2 GE 0 0 1 3 检查
  • 处理不同的请求--设置content-type

    content type的作用 在http协议中 content type用来告诉对方本次传输的数据的类型是什么 在请求头中设置content type来告诉服务器 本次请求携带的数据是什么类型的 在响应头中设置content type来告
  • 写在28岁,回看3年前的自己,庆幸当时入了软件测试这行

    为什么会学习软件测试 已经28岁了 算一下快过去3年了 刚毕业那会工作了一年 因为自己当时很迷茫 觉得自己挺废的 所以就没去工作就一直在家 家里固定每个月给点生活费 但还是没钱 但家里给了我一套房子 出门300米左右就是地铁站 自己一个人住
  • Java框架--Spring(轻量级容器框架)(入门+ioc)

    目录 一 概念 海绵hong对于ioc的理解 二 spring快速入门 1 最基本的spring实例 1 1javabean类 1 2beans xml 1 3 ioc容器使用 2 spring 容器结构 机制 2 1beanDefinit
  • kmalloc使用相关

    Kmalloc内存分配和malloc相似 除非被阻塞否则他执行的速度非常快 而且不对获得空间清零 Flags参数 include
  • swin-transformer训练自己的数据集<自留>

    使用swin transformer训练自己的数据集 lt 自留 gt 前期准备 数据处理 标注数据集 一 结构目录 二 要修改的地方 三 开始训练 四 训练过程结果 前期准备 数据处理 标注数据集 LabelMe gt COCO Labe
  • 24岁,月入15000:真正优秀的人,都在做一件事

    昨天 一位经常来转载我文章的编辑朋友找我聊了会 聊完之后 很想写篇文章来谈谈我内心的感受 他告诉我 下个月就要去深圳了 那边有一家公司希望他过去 毕业两年 24岁 月收入稳定在15000 用 年轻有为 来形容他 我觉得并不为过 和他相比起来
  • 服务器系统水星无线网卡,水星设置远程服务器

    水星设置远程服务器 内容精选 换一换 本章节介绍Dubbo框架下DTM使用的demo 使得Dubbo框架下的项目可以通过TCC模式快速接入DTM 其中 Dubbo的样例代码在导入样例工程过程中准备的dtm demo的dtm dubbo项目中
  • Tomcat安装及基本使用

    1 什么是Web服务器 Web服务器是一种应用程序 软件 它封装了对HTTP协议的操作 使得开发人员无需直接操作协议 从而简化了Web开发 其主要功能是提供网上信息浏览服务 Web服务器安装在服务器端 我们可以将自己编写的Web项目部署到W
  • 概率与统计之一 标准差(standard deviation)和标准误(standard error)

    标准差和标准误差 标准差 standard deviation 和标准误差 standard error of mean 根据国际标准化组织 ISO 的定义 标准差 是方差 2的正平方根 而方差是随机变量期望的二次偏差的期望 什么是标准误差
  • 使用Scrapy爬取励志名句————祝万千学子高考顺利

    6月7日 2021年全国高考正式拉开大幕 1078万考生将赶赴考场 迎接人生路上的一次大考 在此 我将使用Scrapy爬取一些励志名句献给广大的高考考生 祝他们高考顺利 学业有成 流程分析 创建项目 创建爬虫程序 进行初始化设置 分析网页并
  • java oj 1035-1045

    1037 四则运算 Switch总是忘记break 输入一个字符 String s input next char ch s charAt 0 除数是0 用 s2 1e 10 即10的 10次方 判断 if Math abs b lt 1e
  • 激光雷达远距离灰尘扬尘烟雾粉尘检测

    最近对激光检测粉尘产生了一点兴趣 于是使用已有的雷达做了检测思路的验证 检测范围可以和雷达的扫描范围一致 约为 0 260m 验证过程使用面粉抛洒 场景如下 红色框就是粉尘的位置 俯视图如下 检测结果如下 绿色范围是检测算法自动框出来的结果
  • 升级Ubuntu18.04的linux kernel(修复小米游戏本的触摸板驱动问题)

    前言 前一段时间换电脑 置换了小米的游戏本 装了ubuntu18 04的系统 demesg发现一直报一个关于i2c接口的错误 473 518316 i2c hid i2c CUST0001 00 i2c hid get input inco
  • 小程序协议篇

    前言 采用的是uniapp的开发框架 引入了mp html的插件做富文本显示插件 操作 打开 富文本编辑 复制粘贴对应的协议文本 直接从word文档或者在线文档复制出来 要带样式的 点击F12或者右键点击检查 进入到Console下面 输入
  • python实现基数排序

    思路 先比较个位数 得到一个新的序列 再按照十位数排序 在上一个新序列的基础上又得到 一个新的序列 然后再按照百位数排序 在上一个新序列的基础上又得到一新的序列 只到排到所有数中的最高位 依次输出列表 排序结束 栗子 例 li 12 90
  • LeetCode 热题 HOT 100:二叉树专题

    LeetCode 热题 HOT 100 https leetcode cn problem list 2cktkvj 文章目录 94 二叉树的中序遍历 递归与非递归 补充 144 二叉树的前序遍历 递归与非递归 补充 145 二叉树的后序遍