- 一、为什么要区别深拷贝和浅拷贝 在JavaScript中,对象和数组是引用类型,这意味着当你将它们赋值给一个变量或者作为函数参数传递时,你实际上是在传递一个指向内存中对象的引用,而不是对象本身的副本。这就涉及到了深拷贝和浅拷贝的概念。二、浅拷贝2.1、什么是浅拷贝 浅拷贝只复制对象的第一层属性。也就是说,如果原始对象的属性是基本类型(如数字、字符串、布尔值),那... 一、为什么要区别深拷贝和浅拷贝 在JavaScript中,对象和数组是引用类型,这意味着当你将它们赋值给一个变量或者作为函数参数传递时,你实际上是在传递一个指向内存中对象的引用,而不是对象本身的副本。这就涉及到了深拷贝和浅拷贝的概念。二、浅拷贝2.1、什么是浅拷贝 浅拷贝只复制对象的第一层属性。也就是说,如果原始对象的属性是基本类型(如数字、字符串、布尔值),那...
- 文章部分截图来自于比特算法竞赛课程,仅供学习交流,侵权联系删除; 1.树的存储学会使用孩子表示法,对于我们的树进行表示和遍历的过程,孩子表示法,就是只关心这个孩子的信息;清楚这个父子关系的情况里面,我们存储的就是孩子,但是在不清楚这个父子关系的树里面,我们把这个相连接的所有的节点全部记录下来即可; 2.使用vector对于树的节点存储的代码实现下面的这个就是我们的代码:实际上就是把和这个节点... 文章部分截图来自于比特算法竞赛课程,仅供学习交流,侵权联系删除; 1.树的存储学会使用孩子表示法,对于我们的树进行表示和遍历的过程,孩子表示法,就是只关心这个孩子的信息;清楚这个父子关系的情况里面,我们存储的就是孩子,但是在不清楚这个父子关系的树里面,我们把这个相连接的所有的节点全部记录下来即可; 2.使用vector对于树的节点存储的代码实现下面的这个就是我们的代码:实际上就是把和这个节点...
- Rust知识篇05-所有权和借用 Rust知识篇05-所有权和借用
- 2025-07-31:最多 K 个元素的子序列的最值之和。用go语言,给定一个整数数组 nums 和一个正整数 k,求所有非空子序列中,长度不超过 k 的那些子序列的“最大元素和最小元素之和”的累加和。需要注意的是,子序列是从原数组中删去部分元素(顺序不变)得到的序列。由于结果可能非常庞大,请将最终答案对 1000000007 取模后返回。1 <= nums.length <= 100000... 2025-07-31:最多 K 个元素的子序列的最值之和。用go语言,给定一个整数数组 nums 和一个正整数 k,求所有非空子序列中,长度不超过 k 的那些子序列的“最大元素和最小元素之和”的累加和。需要注意的是,子序列是从原数组中删去部分元素(顺序不变)得到的序列。由于结果可能非常庞大,请将最终答案对 1000000007 取模后返回。1 <= nums.length <= 100000...
- 递归函数 递归函数
- 递归的算法题目 递归的算法题目
- 2025-07-30:变长子数组求和。用go语言,给定一个长度为 n 的整数数组 nums。对于数组中的每个位置 i(范围是 0 到 n-1),我们定义一个子数组,区间为 nums[start … i],其中 start 等于 max(0, i - nums[i])。任务是计算并返回对于每个位置 i,所对应的子数组内所有元素的累加和。简而言之,就是对于每个元素,根据它的值确定子数组的起始位置... 2025-07-30:变长子数组求和。用go语言,给定一个长度为 n 的整数数组 nums。对于数组中的每个位置 i(范围是 0 到 n-1),我们定义一个子数组,区间为 nums[start … i],其中 start 等于 max(0, i - nums[i])。任务是计算并返回对于每个位置 i,所对应的子数组内所有元素的累加和。简而言之,就是对于每个元素,根据它的值确定子数组的起始位置...
- 2025-07-29:所有安放棋子方案的曼哈顿距离。用go语言,给定三个整数 m、n 和 k,表示一个 m 行 n 列的棋盘,以及需要放置的 k 个相同棋子。任务是计算出所有可能的合法放置方案中,每个方案中所有棋子两两之间曼哈顿距离的总和,再把这些结果加起来。所谓合法方案,指的是将这 k 个棋子都放入棋盘中,且每个格子最多放一颗棋子。曼哈顿距离定义为两个格子坐标 (x1, y1) 和 (x2... 2025-07-29:所有安放棋子方案的曼哈顿距离。用go语言,给定三个整数 m、n 和 k,表示一个 m 行 n 列的棋盘,以及需要放置的 k 个相同棋子。任务是计算出所有可能的合法放置方案中,每个方案中所有棋子两两之间曼哈顿距离的总和,再把这些结果加起来。所谓合法方案,指的是将这 k 个棋子都放入棋盘中,且每个格子最多放一颗棋子。曼哈顿距离定义为两个格子坐标 (x1, y1) 和 (x2...
- 2025-07-27:将数组变相同的最小代价。用go语言,你有两个长度均为 n 的整型数组 arr 和 brr,还有一个整数 k。你可以对 arr 进行以下两种操作,次数不限:将 arr 分成若干连续的子数组,然后按照任意顺序重新排列,这个操作的代价是 k。选择 arr 中的任意一个元素,并将该元素增加或减少一个正整数 x,代价为 x。请你计算并返回将 arr 变成 brr 所需的最小总代价... 2025-07-27:将数组变相同的最小代价。用go语言,你有两个长度均为 n 的整型数组 arr 和 brr,还有一个整数 k。你可以对 arr 进行以下两种操作,次数不限:将 arr 分成若干连续的子数组,然后按照任意顺序重新排列,这个操作的代价是 k。选择 arr 中的任意一个元素,并将该元素增加或减少一个正整数 x,代价为 x。请你计算并返回将 arr 变成 brr 所需的最小总代价...
- B+树索引 核心特性多路平衡查找树:每个节点可包含多个子节点(由阶数决定),通过分层结构降低树高,减少磁盘I/O次数。节点分工明确内部节点:仅存储键值用于导航,不直接存储数据。叶子节点:存储所有实际数据,并通过双向链表连接,支持高效的范围查询和顺序访问。平衡性与分裂机制:通过节点分裂或合并维持平衡,保证所有叶子节点位于同一层。高扇出性:单个节点可存储大量键值,显著降低树的高度。 优势与适用... B+树索引 核心特性多路平衡查找树:每个节点可包含多个子节点(由阶数决定),通过分层结构降低树高,减少磁盘I/O次数。节点分工明确内部节点:仅存储键值用于导航,不直接存储数据。叶子节点:存储所有实际数据,并通过双向链表连接,支持高效的范围查询和顺序访问。平衡性与分裂机制:通过节点分裂或合并维持平衡,保证所有叶子节点位于同一层。高扇出性:单个节点可存储大量键值,显著降低树的高度。 优势与适用...
- 去年我们接手了一个数据分析系统,日增数据量500万条,总数据量已经突破10亿。最要命的是,运营部门的查询需求五花八门:“查询所有上海地区、年龄25-35岁、最近7天活跃的VIP用户”,这种查询每天要跑上千次。原系统用的是普通B+树索引,复杂查询经常要扫描上千万行数据,一个查询跑十几分钟是家常便饭。经过3个月的优化,我们用红黑树优化了内存索引结构,用位图索引处理低基数字段,查询性能提升了50... 去年我们接手了一个数据分析系统,日增数据量500万条,总数据量已经突破10亿。最要命的是,运营部门的查询需求五花八门:“查询所有上海地区、年龄25-35岁、最近7天活跃的VIP用户”,这种查询每天要跑上千次。原系统用的是普通B+树索引,复杂查询经常要扫描上千万行数据,一个查询跑十几分钟是家常便饭。经过3个月的优化,我们用红黑树优化了内存索引结构,用位图索引处理低基数字段,查询性能提升了50...
- 泛型编程和协变逆变是现代编程语言中两个非常重要的概念。它们为开发者提供了更强大的类型系统和更灵活的代码复用机制。本文将详细介绍这两种技术的核心思想、适用场景、典型问题及其实现示例。 1. 泛型编程(Generic Programming) 核心思想泛型编程是一种编写代码时使用类型参数的编程风格,允许开发者编写更加通用、可复用的代码,而不必在编写时指定具体类型。通过泛型编程,可以实现代码复用,... 泛型编程和协变逆变是现代编程语言中两个非常重要的概念。它们为开发者提供了更强大的类型系统和更灵活的代码复用机制。本文将详细介绍这两种技术的核心思想、适用场景、典型问题及其实现示例。 1. 泛型编程(Generic Programming) 核心思想泛型编程是一种编写代码时使用类型参数的编程风格,允许开发者编写更加通用、可复用的代码,而不必在编写时指定具体类型。通过泛型编程,可以实现代码复用,...
- 在算法设计中,动态规划和分治算法是两种非常重要且常用的策略。它们各自适用于不同类型的问题,通过合理运用,可以大幅提升算法的效率。本文将详细介绍这两种算法的核心思想、适用场景、典型问题及其实现示例。 1. 动态规划(Dynamic Programming) 核心思想动态规划是一种通过将问题分解为相互重叠的子问题,先解决子问题,再逐步构建出最终解的算法设计技术。它通常用于具有重叠子问题和最优子结... 在算法设计中,动态规划和分治算法是两种非常重要且常用的策略。它们各自适用于不同类型的问题,通过合理运用,可以大幅提升算法的效率。本文将详细介绍这两种算法的核心思想、适用场景、典型问题及其实现示例。 1. 动态规划(Dynamic Programming) 核心思想动态规划是一种通过将问题分解为相互重叠的子问题,先解决子问题,再逐步构建出最终解的算法设计技术。它通常用于具有重叠子问题和最优子结...
- 函数式编程(Functional Programming)是一种编程范式,强调计算作为数学函数的评估。近年来,随着编程语言的不断发展,函数式编程的概念和技术逐渐被广泛应用。本文将详细介绍函数式编程中的三个重要概念:匿名函数、尾递归优化和高阶函数,并探讨它们在实际编程中的应用。 匿名函数 定义匿名函数(Anonymous Function),也称为 lambda 表达式,是一种没有名称的函数。... 函数式编程(Functional Programming)是一种编程范式,强调计算作为数学函数的评估。近年来,随着编程语言的不断发展,函数式编程的概念和技术逐渐被广泛应用。本文将详细介绍函数式编程中的三个重要概念:匿名函数、尾递归优化和高阶函数,并探讨它们在实际编程中的应用。 匿名函数 定义匿名函数(Anonymous Function),也称为 lambda 表达式,是一种没有名称的函数。...
- 背景我们维护一套 Node.js + C++ hybrid 的脚本引擎,源码 12 W 行,交付给客户后常被丢上某第三方逆向平台。老板一句话:“既要让对手看不懂,也要让我们自己能改 bug。”于是我们把抽象语法树(AST)当成画布,用一套“可控混淆”流程上线。三个月内,逆向报告从 3 份降到 0 份,引擎体积反而从 38 MB 缩到 26 MB。复盘如下,数字来自 cloc + perf r... 背景我们维护一套 Node.js + C++ hybrid 的脚本引擎,源码 12 W 行,交付给客户后常被丢上某第三方逆向平台。老板一句话:“既要让对手看不懂,也要让我们自己能改 bug。”于是我们把抽象语法树(AST)当成画布,用一套“可控混淆”流程上线。三个月内,逆向报告从 3 份降到 0 份,引擎体积反而从 38 MB 缩到 26 MB。复盘如下,数字来自 cloc + perf r...
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签