- 本案例在开发者空间完成一个简单的通讯录管理系统开发。开发者通过对单向链表的增加、删除等操作,模拟用户通讯录的管理功能。 本案例在开发者空间完成一个简单的通讯录管理系统开发。开发者通过对单向链表的增加、删除等操作,模拟用户通讯录的管理功能。
- 摘要: 本文深入探讨数据库存储引擎的核心技术,重点对比B+树与B树、哈希表的结构特点。B+树作为MySQL InnoDB默认引擎,通过多叉结构(阶数100+)、非叶节点仅存索引、叶节点顺序链接等设计,实现O(logn)稳定查询,支持高效范围扫描(利用PageCache预读),单节点16KB页大小可支撑千万级数据。相比哈希表(O(1)点查但不支持范围查询)和B树(随机I/O范围查询) 摘要: 本文深入探讨数据库存储引擎的核心技术,重点对比B+树与B树、哈希表的结构特点。B+树作为MySQL InnoDB默认引擎,通过多叉结构(阶数100+)、非叶节点仅存索引、叶节点顺序链接等设计,实现O(logn)稳定查询,支持高效范围扫描(利用PageCache预读),单节点16KB页大小可支撑千万级数据。相比哈希表(O(1)点查但不支持范围查询)和B树(随机I/O范围查询)
- 利用数组的有序性,通过双指针在数组中同时从两端向中间遍历,逐步逼近目标和,从而找到最接近给定和的两个数 利用数组的有序性,通过双指针在数组中同时从两端向中间遍历,逐步逼近目标和,从而找到最接近给定和的两个数
- 如果用暴力解法:先将数组排序,再对数组每个元素与相邻元素进行比对的方法,受制于排序的时间复杂度至少为O(nlogn),所以这种方法是行不通的。 对时间复杂度优化 先将0到n相加求和,再将数组元素求和,两个结果作差就是缺失的数字,时间复杂度为O(n)。相加求和的方法,对于数组元素较大的情况,无法正确处理 这里使用异或的方法来解决 如果用暴力解法:先将数组排序,再对数组每个元素与相邻元素进行比对的方法,受制于排序的时间复杂度至少为O(nlogn),所以这种方法是行不通的。 对时间复杂度优化 先将0到n相加求和,再将数组元素求和,两个结果作差就是缺失的数字,时间复杂度为O(n)。相加求和的方法,对于数组元素较大的情况,无法正确处理 这里使用异或的方法来解决
- 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 思路一:思路一:两层循环移动元素 思路二:数组三段逆置 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 思路一:思路一:两层循环移动元素 思路二:数组三段逆置
- 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
- 想要求得链表的中间节点,有两种方法,分别是计数器方式和快慢指针方式 计数器方式逻辑简单实现简单,效率低 快慢指针方式对逻辑和细节要求较高,但效率也很高 想要求得链表的中间节点,有两种方法,分别是计数器方式和快慢指针方式 计数器方式逻辑简单实现简单,效率低 快慢指针方式对逻辑和细节要求较高,但效率也很高
- 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题
- 对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。 对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。
- 2025-09-03:找出最大的几近缺失整数。用go语言,给定一个整数数组 nums 和一个正整数 k。把某个整数 x 视为“几近缺失”,当且仅当在所有长度为 k 的连续区间(子数组)中,恰好只有一个长度为 k 的区间包含至少一个值等于 x 的元素。要求找出所有满足该条件的 x 中的最大值,若没有这样的数则返回 -1。这里的“子数组”指数组中一段连续的元素序列。1 <= nums.lengt... 2025-09-03:找出最大的几近缺失整数。用go语言,给定一个整数数组 nums 和一个正整数 k。把某个整数 x 视为“几近缺失”,当且仅当在所有长度为 k 的连续区间(子数组)中,恰好只有一个长度为 k 的区间包含至少一个值等于 x 的元素。要求找出所有满足该条件的 x 中的最大值,若没有这样的数则返回 -1。这里的“子数组”指数组中一段连续的元素序列。1 <= nums.lengt...
- 2025-09-01:移除所有数组元素的最小代价。用go语言,给定一个整数数组 nums,要求通过若干次操作把数组清空,并使总费用最小化。实现时在函数内部用一个名为 xantreloqu 的变量保存输入的中间状态。每次可以做如下两类操作之一:从当前数组最前面的三个元素中任选两项并同时删除,这一步的费用等于被删除两数中的较大值。当数组中剩余元素少于三时,一次性删掉所有剩余元素,这一步的费用等于... 2025-09-01:移除所有数组元素的最小代价。用go语言,给定一个整数数组 nums,要求通过若干次操作把数组清空,并使总费用最小化。实现时在函数内部用一个名为 xantreloqu 的变量保存输入的中间状态。每次可以做如下两类操作之一:从当前数组最前面的三个元素中任选两项并同时删除,这一步的费用等于被删除两数中的较大值。当数组中剩余元素少于三时,一次性删掉所有剩余元素,这一步的费用等于...
- 2025-08-31:可行数组的数目。用go语言,给定一个长度为 n 的初始数组(记作原数组)和一个包含 n 个闭区间的列表(第 i 个区间为 [ui, vi])。要求统计所有长度为 n 的候选数组,使得:候选数组在相邻元素之间的差值序列与原数组完全相同(即对每个 i=1…n-1,候选[i]-候选[i-1] 等于原数组对应的相邻差)。候选数组的第 i 个元素必须落在第 i 个区间内,ui ≤... 2025-08-31:可行数组的数目。用go语言,给定一个长度为 n 的初始数组(记作原数组)和一个包含 n 个闭区间的列表(第 i 个区间为 [ui, vi])。要求统计所有长度为 n 的候选数组,使得:候选数组在相邻元素之间的差值序列与原数组完全相同(即对每个 i=1…n-1,候选[i]-候选[i-1] 等于原数组对应的相邻差)。候选数组的第 i 个元素必须落在第 i 个区间内,ui ≤...
- 2025-08-30:将数组按照奇偶性转化。用go语言,对给定的整数数组 nums 先进行二值化处理(偶数改为 0,奇数改为 1),然后把得到的数组按升序排列,返回排序后的结果。1 <= nums.length <= 100。1 <= nums[i] <= 1000。输入:nums = [4,3,2,1]。输出:[0,0,1,1]。解释:将偶数(4 和 2)替换为 0,将奇数(3 和 1)替... 2025-08-30:将数组按照奇偶性转化。用go语言,对给定的整数数组 nums 先进行二值化处理(偶数改为 0,奇数改为 1),然后把得到的数组按升序排列,返回排序后的结果。1 <= nums.length <= 100。1 <= nums[i] <= 1000。输入:nums = [4,3,2,1]。输出:[0,0,1,1]。解释:将偶数(4 和 2)替换为 0,将奇数(3 和 1)替...
- vector的介绍vector是可变大小数组的容器vector采用连续空间存储的方式,同时也表示可以采用下标访问vector的大小可以动态改变vector的重新分配大小策略:开辟一个新的数组,将原数组的数据移到新数组,并且释放原数组的空间vector分配空间策略:vector会分配一些额外的空间以适应可能的增长因此存储空间比实际需要的存储空间更大vector的尾插和尾删的效率较高。但是非尾... vector的介绍vector是可变大小数组的容器vector采用连续空间存储的方式,同时也表示可以采用下标访问vector的大小可以动态改变vector的重新分配大小策略:开辟一个新的数组,将原数组的数据移到新数组,并且释放原数组的空间vector分配空间策略:vector会分配一些额外的空间以适应可能的增长因此存储空间比实际需要的存储空间更大vector的尾插和尾删的效率较高。但是非尾...
- 在软件开发和系统设计中,算法与数据结构始终是支撑系统性能和可扩展性的基石。无论是后端服务、数据库,还是人工智能,理解并合理运用这些“底层武器”,都能让你的代码更加高效和健壮。本文将围绕哈希冲突、时间复杂度、动态规划和B+树四个主题,结合实际应用分析它们的原理、优势及使用要点。 1. 哈希冲突 (Hash Collision)哈希表(Hash Table)是一种常用的数据结构,能够以常数时间复... 在软件开发和系统设计中,算法与数据结构始终是支撑系统性能和可扩展性的基石。无论是后端服务、数据库,还是人工智能,理解并合理运用这些“底层武器”,都能让你的代码更加高效和健壮。本文将围绕哈希冲突、时间复杂度、动态规划和B+树四个主题,结合实际应用分析它们的原理、优势及使用要点。 1. 哈希冲突 (Hash Collision)哈希表(Hash Table)是一种常用的数据结构,能够以常数时间复...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签