当前位置: 首页 > news >正文

代码随想录算法训练营第60期第十七天打卡

       今天我们继续进入二叉树的下一个章节,今天的内容我在写今天的博客前大致看了一下部分题目难度不算大,那我们就进入今天的题目。

第一题对应力扣编号为654的题目最大二叉树

       这道题目的坑相当多,我第一次题目没有看明白就是我不知道到底是如何构造出这棵二叉树的,我就直接看了视频讲解,现在我们先来看一下题目:

        我们先看一下示例是什么意思,注意力扣上是这样解释的:

        首先找出最大值,然后分割数组找到左边部分与右边部分然后递归构造出根节点的左子树与右子树就可以了,这样我才明白这道题目究竟是什么意思,既然要构造二叉树大家记住,我们大概率会选用前序遍历,为什么呢?因为我们构造二叉树一定是先要从根节点出发才能逐步构建起它的左子树与右子树进而递归构造出整棵二叉树,这个是大家一定要去了解的,后来看完讲解我发现这道题与我们昨天的最后一道题有异曲同工之妙,其实都还是递归构建,当然我们这里是需要先找出最大的元素作为根节点,随后我们就可以找到左子树与右子树,递归构建就可以了,我要说明一下注意我们后来的数组是左闭右开的,一定注意,我们传入数组递归构建就可以,我将代码放到下面大家可以自行参考:

class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {TreeNode* node = new TreeNode(0);//特殊情况要考虑上不要忘记if (nums.size() == 1) return new TreeNode(nums[0]);//那为什么没有考虑数组为空的情况呢?因为题目说了数组的大小是大于等于1的int maxValue = 0;//定义最大值int index = 0;//定义最大值的下标for (int i = 0; i < nums.size(); ++i){if (nums[i] > maxValue){maxValue = nums[i];index = i;}}node -> val = maxValue;//构造左子树if (index > 0){vector<int> newVec(nums.begin(), nums.begin() + index);node->left = constructMaximumBinaryTree(newVec);}//构造右子树if (index < (nums.size() - 1)){vector<int> newVec(nums.begin() + index + 1, nums.end());node -> right = constructMaximumBinaryTree(newVec);}return node;}
};

       那其实这道题目还有优化版本的代码大家可以发现我需要构造新的数组来存储左右子数,这样其实又耗时又耗空间,这里我再给出优化版的代码:

class Solution {
private:// 在左闭右开区间[left, right),构造二叉树TreeNode* traversal(vector<int>& nums, int left, int right) {if (left >= right) return nullptr;// 分割点下标:maxValueIndexint maxValueIndex = left;for (int i = left + 1; i < right; ++i) {if (nums[i] > nums[maxValueIndex]) maxValueIndex = i;}TreeNode* root = new TreeNode(nums[maxValueIndex]);// 左闭右开:[left, maxValueIndex)root->left = traversal(nums, left, maxValueIndex);// 左闭右开:[maxValueIndex + 1, right)root->right = traversal(nums, maxValueIndex + 1, right);return root;}
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return traversal(nums, 0, nums.size());}
};

        这样就可以避免申请新的空间来重新建立数组,我们直接使用下标操作,不过建议大家先把最基础的版本搞明白其实就可以了。这道题目我就先分享到这里,接下来我们看下一道题目。

第二题对应力扣编号为617的题目合并二叉树

        那这道题是什么意思呢?其实是将两棵树相对应位置的节点的数值相加最后可以得到一棵新的二叉树,我们来看一下具体的题目:

        我们应该如何考虑这道题目呢?其实这道题目难点就在于它是同时操作两棵二叉树,而我们平时刷的题都是操作一棵二叉树,但是我希望这道题过后大家可以掌握应该如何同时操作两棵二叉树,首先大家要知道一点就是如果我在合并的过程中我如果其中一棵二叉树的当前的节点是空,其实我的新合并出来的二叉树就应该是另一棵二叉树的所对应节点的值,如果两棵二叉树都为空,那其实新二叉树的对应节点也为空,随后我们递归构建左子树与右子树就可以,最后返回根节点,当然我下面提供的代码是我在tree1的基础上更新,其实大家也可以开一棵新的二叉树,在这里我就提供一下更新版本的代码,如果开新的二叉树版本大家感兴趣的话可以去代码随想录网站去看:

class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (root1 == NULL) return root2;if (root2 == NULL) return root1;//if (root1 == NULL && root2 == NULL) return NULL;//其实两棵树的对应节点都为空的情况已经包含了(上面这一句可以不写)root1 -> val += root2 -> val;root1 -> left = mergeTrees(root1 -> left, root2 -> left);root1 -> right = mergeTrees(root1 -> right, root2 -> right);return root1;}
};

第三题对应力扣编号为700的二叉搜索树中的搜索

         在这里我们就引入了二叉搜索树了,我们先复习一下什么样的树叫做二叉搜索树,其实是左子树的所有数值小于根节点,右子树的所有数值大于根节点就是二叉搜索树,我们了解了定义以后我们一起来看一下题目:

       我看到示例就大致明白了题目的具体要求了,其实题目给我们的是一个层序遍历和一个节点的值,要求我们返回以该节点为根的子树,那我们如何解决这道题目呢?其实这道题目的递归法与迭代法都不难理解,我两种思路都给大家展示一下,首先题目就很好利用了二叉搜索树的性质,其实我们是可以利用二叉搜索树的性质来判断我们当前搜索的是在左子树还是右子树,就是与根节点的值进行比较,如果小就说明我们目前在左子树,如果大说明我们目前在右子树,那这样我们可以写出如下的递归代码:

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {if (root == NULL || root -> val == val) return root;TreeNode* result = NULL;//这时候在左子树if (root -> val > val){//注意我们使用一个临时变量来存储我们找到的值result = searchBST(root -> left, val);}//这时候在右子树 else if (root -> val < val){result = searchBST(root -> right, val);}return result;}
};

          接下来我们来看一下迭代法如何写,其实我们原来是不是写过迭代法,我们一些用到迭代法都是会用栈或者队列去模拟深度遍历和广度遍历,但这里我们考虑到二叉搜索树的特殊性,其实我们不需要这么麻烦了,它的节点是有序的我们就不需要四处搜索了,我们看一下代码是如何写的:

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {while (root != NULL) {if (root->val > val) root = root->left;else if (root->val < val) root = root->right;else return root;}return NULL;}
};

第四题验证二叉搜索树对应力扣编号98

        我们上一道题已经刷到过关于二叉搜索树的题目,这一道题是让我们验证二叉搜索树,我们看一下题目到底是怎么说的:

        其实题目要求很简单了,那么我们应该如何解决呢?其实这道题目有点那种数学题的感觉叫做“会者不难,难者不会”,我为啥这样说呢?因为如果大家知道一个二叉搜索树的性质其实就很简单了,我直接告诉大家,大家以后记住就可以了“中序遍历下,输出的二叉搜索树节点的数值是有序序列”,只要大家知道这个性质其实代码就很好写了,我们使用我们之前的迭代写法将这棵树的中序遍历的结果存储到一个数组里,然后判断这个数组是否有序就可以了,我可以直接给出代码:

class Solution {
private:vector<int> vec;void traversal(TreeNode *root){if (root == NULL) return;//左根右的中序遍历if (root -> left) traversal(root -> left);vec.push_back(root -> val);if (root -> right) traversal(root -> right);}
public:bool isValidBST(TreeNode* root) {vec.clear();//先清空traversal(root);//这样其实就将数组再次填满了for (int i = 1; i < vec.size(); ++i){if (vec[i] <= vec[i - 1]) return false;}return true;}
};

      这是一种最为直观的做法,大家务必要将这个技巧牢记于心,那其实还有其他方法,我们还是要注意我们二叉搜索树是左子树所有的节点都是小于根节点的,右子树所有的节点都是大于根节点的,千万不要不判断根节点与它的左右孩子的关系,这样是无法判断是不是二叉搜索树的,因为不符合我们二叉搜索树的定义,那我们应该如何判断呢?其实我们还是可以使用递归的,我们其实可以一直中序遍历,只要发现没有顺序的就可以直接return false,那我们的代码可以这样写:

class Solution {
public:long long maxVal = LONG_MIN; // 因为后台测试数据中有int最小值bool isValidBST(TreeNode* root) {if (root == NULL) return true;bool left = isValidBST(root->left);// 中序遍历,验证遍历的元素是不是从小到大if (maxVal < root->val) maxVal = root->val;else return false;bool right = isValidBST(root->right);return left && right;}
};

       就是说我们一直更新maxVal如果左子树的节点小于根节点的值那我就一直赋值如果发现有大于的这在左子树这边就说明不是二叉搜索树了,我们来看一下代码:

class Solution {
public:long long maxVal = LONG_MIN;bool isValidBST(TreeNode* root) {if (root == NULL) return true;bool left = isValidBST(root -> left);if (maxVal < root -> val) maxVal = root -> val;else return false;bool right = isValidBST(root -> right);return left && right;}
};

        这个其实还是中序遍历,左根右的顺序,我们先看左子树,只要当前节点不为空就一直递归,先左再右,最后发现到了叶子节点,最后将根节点赋值给maxVal,接着去判断右边,如果最后左右都为true就是二叉搜索树了,这个递归还有点难度,就是我们是如何递归的,先左一直到叶子节点会返回true,随后我们赋值,再去判断右子树,当右子树也到了叶子节点的时候也会返回 true,根节点的右子树是一个意思,最后我们判断是否是true, 我还是建议大家用上面的第一种方法理解,这个递归作为选学,上面的那一种方法必须会。

总结

        今天的题目还是挺有意思的,我们也接触了二叉搜索树,最大二叉树是一道不错的题目,我们学会了递归与分割数组,合并二叉树其实还是递归,随后的两道题我们接触了二叉搜索树,大家自己要去消化一下,我们明天再见!

相关文章:

代码随想录算法训练营第60期第十七天打卡

今天我们继续进入二叉树的下一个章节&#xff0c;今天的内容我在写今天的博客前大致看了一下部分题目难度不算大&#xff0c;那我们就进入今天的题目。 第一题对应力扣编号为654的题目最大二叉树 这道题目的坑相当多&#xff0c;我第一次题目没有看明白就是我不知道到底是如何…...

C 语言数组详解

一、数组的基本概念 在 C 语言中&#xff0c;数组是一种相同数据类型元素的集合&#xff0c;这些元素在内存中连续存储。通过数组&#xff0c;我们可以用一个统一的名字来管理一组相关的数据&#xff0c;并且通过下标&#xff08;索引&#xff09;快速访问其中的每一个元素。例…...

ADVB协议同步

关于视频传输&#xff0c;有多种控制时序。协议标准允许设计者选择有限的几个速率的接口来满足 系统设计目标。例如&#xff0c;一些系统使用总线时序发送信息通过line-by-line;在这个案例中&#xff0c; 容器的sof作为vsync同步的点。horizontal line blanding将插入idles,ADV…...

基于LAB颜色空间的增强型颜色迁移算法

本文算法使用Grok完成所有内容&#xff0c;包含算法改进和代码编写&#xff0c;可大大提升代码编写速度&#xff0c;算法改进速度&#xff0c;提供相关idea&#xff0c;提升效率&#xff1b; 概述 本文档描述了一种基于LAB颜色空间的颜色迁移算法&#xff0c;用于将缩略图D的…...

复合材料高置信度 DIC 测量与高级实验技术研讨会邀请函

邀请函 2025年5月8日 上海 中国复合材料学会官网会议通知 您可以点击上方蓝字跳转官网查看官网信息 主办单位&#xff1a; 中国复合材料学会 协办单位&#xff1a; 研索仪器科技&#xff08;上海&#xff09;有限公司 数字图像相关技术&#xff08;Digital Image Correla…...

解决docker部署MySQL的max_allowed_packet 限制问题

报错 Error querying database. Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (2,471 > 2,048). You can change this value on the server by setting the max_allowed_packet variable. ### The error may exist in file …...

【XR手柄交互】Unity 中使用 InputActions 实现手柄控制详解(基于 OpenXR + Unity新输入系统(Input Actions))

摘要&#xff1a; 本文主要介绍如何使用 Input Actions&#xff08;Unity 新输入系统&#xff09; OpenXR 来实现 VR手柄控制&#xff08;监听ABXY按钮、摇杆、抓握等操作&#xff09;。 &#x1f3ae; Unity 中使用 InputActions 实现手柄控制详解&#xff08;基于 OpenXR 新…...

C++:继承机制详解

目录 一.继承的概念及定义 一&#xff09;.继承的概念 二&#xff09;.继承定义 1.定义格式 2.继承类型 3.继承类模板 二.基类和派生类间的转换 三.继承中的作用域 四.派生类的默认成员函数 一&#xff09;.4个常见默认成员函数 二&#xff09;.不可被继承的类 五…...

自然语言处理+知识图谱:智能导诊的“大脑”是如何工作的?

智能导诊系统定义与作用 智能导诊系统是一种基于人工智能技术的医疗辅助工具&#xff0c;旨在提高医疗服务效率、改善患者就医体验、降低医院运营成本&#xff0c;通过自然语言处理技术&#xff0c;智能导诊系统能够自动回答患者的常见问题&#xff0c;帮助患者快速了解自己的…...

论文阅读笔记——ZeroGrasp: Zero-Shot Shape Reconstruction Enabled Robotic Grasping

ZeroGrasp 论文 多视角重建计算大、配置复杂&#xff0c;本文将稀疏体素重建&#xff08;快且效果好&#xff09;引入机器人抓取且只考虑单目重建&#xff0c;通过利用基于物理的接触约束与碰撞检测&#xff08;这对精确抓取至关重要&#xff09;&#xff0c;提升三维重建质量将…...

Qt 调试信息重定向到本地文件

1、在Qt软件开发过程中&#xff0c;我们经常使用qDebug()输出一些调试信息在QtCreator终端上。 但若将软件编译、生成、打包为一个完整的可运行的程序并安装在系统中后&#xff0c;系统中没有QtCreator和编译环境&#xff0c;那应用程序出现问题&#xff0c;如何输出信息排查…...

Android Studio开发中Application和Activity生命周期详解

文章目录 Application生命周期Application生命周期概述Application关键回调方法onCreate()onConfigurationChanged()onLowMemory()onTrimMemory()onTerminate() Application生命周期管理最佳实践 Activity生命周期Activity生命周期概述Activity生命周期回调方法onCreate()onSta…...

vite+vue2+elementui构建之 package.json

webpack版本太低&#xff0c;构建依赖太多&#xff0c;头大。 各种查阅资料&#xff0c;弄了一份直通构建vite构建elementUi核心文件&#xff0c; 构建基于开源若依vue2vue3版本改造&#xff0c;感谢开源&#xff0c;感谢若依。 vitevue2elementui构建之 vite.config.js-CSD…...

安全编排自动化与响应(SOAR):从事件响应到智能编排的技术实践

安全编排自动化与响应&#xff08;SOAR&#xff09;&#xff1a;从事件响应到智能编排的技术实践 在网络安全威胁复杂度指数级增长的今天&#xff0c;人工处理安全事件的效率已难以应对高频攻击&#xff08;如日均万级的恶意IP扫描&#xff09;。安全编排自动化与响应&#xf…...

《Keras 3 :使用 TFServing 提供 TensorFlow 模型》

《Keras 3 :使用 TFServing 提供 TensorFlow 模型》 作者:Dimitre Oliveira 创建日期:2023/01/02 最后修改时间:2023/01/02 描述:如何使用 TensorFlow Serving 为 TensorFlow 模型提供服务。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介绍 构建机器学习模…...

深入理解C++ 中的list容器

目录 一、引言 二、list的基本介绍 2.1 底层结构 2.2 特性 三、list的使用 3.1 构造函数 3.2 迭代器的使用 3.3 容量相关操作 3.4 元素访问相关操作 3.5 修改器操作 3.6 迭代器失效问题 四、list的模拟实现 4.1 节点定义 4.2 迭代器实现 4.3 list类实现 五、lis…...

附赠二张图,阐述我对大模型的生态发展、技术架构认识。

文章精炼&#xff0c;用两张图说明大模型发展业态方向&#xff0c;以及大模型主体技术架构。&#xff08;目前还需要进一步验证我的Thought && ideas&#xff0c;等待机会吧.........&#xff09; 图一&#xff1a;探究大模型三个层次应用方向&#xff0c;浅层次入门简…...

Java实现加密(七)国密SM2算法的签名和验签(附商用密码检测相关国家标准/国密标准下载)

目录 一、国密标准中&#xff0c;关于SM2签名验签的定义二、SM2签名和验签的实现原理1. 前置知识2. 签名生成过程3. 验签过程4. 数学正确性证明5. 安全性与注意事项 三、带userId、不带userId的区别1. 核心区别2.算法区别(1) 哈希计算过程(2) 签名验签流程 四、Java代码实现1. …...

贪心算法~~

目录 一、理论基础 二、题目练习 &#xff08;1&#xff09;455. 分发饼干 &#xff08;2&#xff09;53. 最大子数组和 - 力扣 &#xff08;3&#xff09;122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; &#xff08;4&#xff09;860. 柠檬水找零…...

XYNU2024信安杯-REVERSE(复现)

前言 记录记录 1.Can_you_find_me? 签到题&#xff0c;秒了 2.ea_re 快速定位 int __cdecl main_0(int argc, const char **argv, const char **envp) {int v4; // [esp0h] [ebp-1A0h]const char **v5; // [esp4h] [ebp-19Ch]const char **v6; // [esp8h] [ebp-198h]char v7;…...

NLP系列【自然语言处理的深度学习模型综述】

自然语言处理的深度学习模型 摘要传统自然语言处理模型&#xff08;略 不作重点&#xff09;神经网络自然语言处理模型经典神经网络CNN网络模型Word2Vec模型RNN模型GPT网络模型BERT网络模型 BERT变体模型提升模型性能模型压缩 摘要 在自然语言处理任务方面&#xff0c;依据语料…...

【差分隐私】basic primitive的含义

在差分隐私领域&#xff0c;“basic primitive”一词具有特定的技术含义&#xff0c;需从单词本义及学科背景两个层面解析&#xff1a; 一、单词本义解析 “Primitive”在计算机科学中通常指代基础构建单元或核心组件&#xff0c;例如编程语言中的基本数据类型&#xff08;如整…...

数字浪潮下的算力担当:GPU 服务器的多元应用、核心价值

在当今数据洪流和信息爆炸的时代&#xff0c;算力已成为衡量国家、行业乃至企业发展水平的关键指标。而算力服务器&#xff0c;特别是 GPU 服务器&#xff0c;作为算力的核心载体&#xff0c;正以其卓越性能深刻改变着世界的运行逻辑与模式。从数据处理到云计算&#xff0c;从人…...

【Echarts】使用echarts绘制多个不同类型的中国地图

一、需求 在同一页面上绘制多个不同类型的中国地图&#xff0c;如果是在同一页面上绘制多个同一种类型的地图可以直接引用一个china.js文件&#xff0c;设置两个独立的div分别用于放置两个地图&#xff0c;并实例化配置相关参数即可&#xff0c;但是如果在同一个页面上绘制多个…...

WEB漏洞-XSS跨站原理分类

本文主要内容 原理 XSS漏洞产生原理&#xff1f; XSS漏洞危害影响&#xff1f; 分类 反射型、存储型、DOM型 手法 XSS平台使用 XSS工具使用 XSS结合其他漏洞 靶场搭建 pikachu 靶场搭建&#xff08;完整版&#xff09;-CSDN博客https://blog.csdn.net…...

PR第二课--混剪

1.音乐打点 1.1 手动打点 按钮(如图),或者,快捷键M(如果在已有打点处,再次按M键会进入对标记点的设置界面,如下下图) 1.2 插件打点 一段音乐中,有明显的鼓点时,可以使用打点插件,快捷打点;如果鼓点不明显的话,最好还是手动打点,用插件打点会打出大量的标记点,…...

Kafka和flume整合

需求1&#xff1a;利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台&#xff1a; 在flume/conf下添加.conf文件&#xff0c; vi flume-kafka.conf # 定义 Agent 组件 a1.sourcesr1 a1.sinksk1 a1.c…...

Linux 内核网络协议栈中 inet_stream_ops 与 tcp_prot 的深度解析

在 Linux 内核网络协议栈中,TCP 协议的实现依赖于多个关键结构体的协作。其中,inet_stream_ops 和 tcp_prot 是两个核心结构体,它们分别属于不同的层次,共同完成从用户态系统调用到底层协议处理的完整链路。本文将从功能定位、协作关系、代码示例及设计哲学等方面,深入分析…...

flume整合kafka

需求一&#xff1a; 启动flume 启动kafka消费者&#xff0c;验证数据写入成功 新增测试数据 需求二&#xff1a; 启动Kafka生产者 启动Flume 在生产者中写入数据...

EasyRTC音视频实时通话嵌入式SDK,打造社交娱乐低延迟实时互动的新体验

一、方案背景 在数字化时代&#xff0c;社交娱乐已经成为人们生活中不可或缺的一部分。随着移动互联网和智能设备的普及&#xff0c;用户对实时互动的需求越来越高。EasyRTC作为一款基于WebRTC技术的实时音视频通信解决方案&#xff0c;凭借其低延迟、高稳定性和跨平台兼容性&…...

制作一款打飞机游戏21:自定义工具

关于如何在Pico 8中创建我们自己的编辑器。 外部编辑器的需求 首先&#xff0c;我想谈谈为什么我们需要外部编辑器。外部编辑器通常用于编辑游戏中的数据。例如&#xff0c;一个游戏卡或程序通常包含一些代码&#xff0c;但也会包含数据&#xff0c;比如静态信息&#xff0c;…...

面向高性能运动控制的MCU:架构创新、算法优化与应用分析

摘要&#xff1a;现代工业自动化、汽车电子以及商业航天等领域对运动控制MCU的性能要求不断提升。本文以国科安芯的MCU芯片AS32A601为例&#xff0c;从架构创新、算法优化到实际应用案例&#xff0c;全方位展示其在高性能运动控制领域的优势与潜力。该MCU以32位RISC-V指令集为基…...

LWIP中两种重要的数据结构pbuf和pcb详细介绍

LWIP&#xff08;Lightweight IP&#xff09;是为嵌入式系统设计的轻量级TCP/IP协议栈。pbuf&#xff08;Packet Buffer&#xff09;和PCB&#xff08;Protocol Control Block&#xff09;是LwIP中两个核心数据结构&#xff0c;分别负责数据包管理和协议状态维护。 1. pbuf&…...

embedding_model模型通没有自带有归一化层该怎么处理?

embedding_model 是什么&#xff1a; 嵌入式模型&#xff08;Embedding&#xff09;是一种广泛应用于自然语言处理&#xff08;NLP&#xff09;和计算机视觉&#xff08;CV&#xff09;等领域的机器学习模型&#xff0c;它可以将高维度的数据转化为低维度的嵌入空间&#xff0…...

【蓝桥杯选拔赛真题104】Scratch回文数 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch回文数 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch回文数 第十五届青少年蓝桥杯scratch编…...

1.2-1.3考研408计算机组成原理第一章 计算机系统概述

计算机组成原理第一章 计算机系统概述 一、计算机的层次结构 1.1 计算机系统组成 计算机系统由硬件系统和软件系统两大部分构成&#xff1a; 硬件系统&#xff1a;包括运算器、控制器、存储器、输入设备和输出设备五大核心部件&#xff08;冯诺依曼体系结构&#xff09;。软…...

【QQmusic自定义控件实现音乐播放器核心交互逻辑】第三章

&#x1f339; 作者: 云小逸 &#x1f91f; 个人主页: 云小逸的主页 &#x1f91f; motto: 要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前&#xff0c;其次就是现在&…...

基于图扑 HT 实现的智慧展馆数字孪生应用

在当今数字化时代&#xff0c;智慧展览馆作为传统展览场所的创新升级形态&#xff0c;借助前沿科技与现代化管理理念&#xff0c;实现了全方位的数字化、智能化转型。图扑软件凭借其自主研发的 HT 技术在智慧展馆领域取得了卓越成果&#xff0c;为城市基础设施数字化应用带来了…...

从线性到非线性:简单聊聊神经网络的常见三大激活函数

大家好&#xff0c;我是沛哥儿&#xff0c;我们今天一起来学习下神经网络的三个常用的激活函数。 引言&#xff1a;什么是激活函数 激活函数是神经网络中非常重要的组成部分&#xff0c;它引入了非线性因素&#xff0c;使得神经网络能够学习和表示复杂的函数关系。 在神经网络…...

重生之--js原生甘特图实现

需求&#xff1a; 一个树形结构&#xff0c;根据子节点的时间范围显示显示进度 &#xff0c;不同的时间范围对应不同的颜色 数据类型大概是这个样子的 甘特图 dom部分 首先要计算所有节点的 最大时间和最小时间 然后再计算每个甘特图的宽度 再计算他的偏移量 再计算颜色...

pnpm monoreop 打包时 node_modules 内部包 typescript 不能推导出类型报错

报错信息如下&#xff1a; ../../packages/antdv/components/pro-table/src/form-render.vue:405:1 - error TS2742: The inferred type of default cannot be named without a reference to .pnpm/scroll-into-view-if-needed2.2.31/node_modules/scroll-into-view-if-needed…...

告别默认配置!Xray自定义POC开发指南

文章涉及操作均为测试环境,未授权时切勿对真实业务系统进行测试! 下载与解压 官网地址: Xray GitHub Releases 根据系统选择对应版本: Windows:xray_windows_amd64.exe.zipLinux:xray_linux_amd64.zipmacOS:xray_darwin_amd64.zip解压后得到可执行文件(如 xray_linux_…...

websheet之 自定义函数

在线代码 {.is-success} 一、自定义函数约定 必须遵守本控件的自定函数约定才可以正常使用。 {.is-warning} 约定如下&#xff1a; 自定义类名称与函数名称一致。&#xff08;强制&#xff09;该类方法名称与函数名称一致&#xff0c;该方法是函数的入口。&#xff08;强制&am…...

Jenkins Pipeline 构建 CI/CD 流程

文章目录 jenkins 安装jenkins 配置jenkins 快速上手在 jenkins 中创建一个新的 Pipeline 作业配置Pipeline运行 Pipeline 作业 Pipeline概述Declarative PipelineScripted Pipeline jenkins 安装 安装环境&#xff1a; Linux CentOS 10&#xff1a;Linux CentOS9安装配置Jav…...

电脑技巧:路由器内部元器件介绍

目录 1. 处理器(CPU) 2. 内存(RAM) 3. 固态存储(Flash Memory) 4. 网络接口卡(NIC) 5. 电源模块 6. 散热系统 7. 无线天线 结语 路由器是我们日常上网的重要设备,今天我们就来深入了解路由器内部的各个元器件,了解它们是如何协同工作,一起来看看吧。 1. 处理器(CPU…...

ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变

各位数组操控师们好&#xff01;今天给大家带来的是Apache Commons Lang3中的ArrayUtils工具类。这个工具就像数组界的"孙悟空"&#xff0c;能让你的数组随心所欲地变大、变小、变长、变短&#xff0c;再也不用对着原生数组的"死板"叹气了&#xff01; 一…...

电脑温度怎么看 查看CPU温度的方法

监测电脑温度对于保持硬件健康非常重要&#xff0c;特别是在进行高强度运算、游戏或超频等操作时。过高的温度可能导致硬件性能下降&#xff0c;甚至损坏。本篇文章将介绍查看电脑温度的4种方法。 一、使用Windows内置工具查看CPU温度 Windows系统本身并不直接提供查看CPU温度…...

【合新通信】---浸没式液冷光模块化学兼容性测试方法

一、测试目的与核心挑战 测试目标 验证冷媒&#xff08;氟化液、矿物油等&#xff09;与光模块材料的化学稳定性&#xff0c;确保长期浸没环境下无腐蚀、溶胀或性能衰减。关键风险点&#xff1a;密封材料&#xff08;如硅胶、环氧树脂&#xff09;的溶解或老化&#xff1b;金…...

shell 循环

shell 循环while语句,shell循环until语句在上一篇shell流程控制 1.shell循环until语句 until 条件 #当后面的条件表达式为假的时候的才循环,为真的时候就停止了 do 循环体 done [root@linux-server script]# cat until.sh (1) #!/bin/bash x=1 until [ $x -ge 10 ] 大于…...

【产品经理】常见的交互说明撰写方法

在产品原型设计中&#xff0c;交互说明是确保开发团队准确理解设计意图的关键文档。以下是常见的交互说明撰写方法及其应用场景&#xff0c;帮助您系统化地传达交互逻辑&#xff1a; 文字描述法 方法&#xff1a;用自然语言详细描述操作流程、反馈及规则。 适用场景&#xff…...