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

解决寻找两个正序数组中位数问题:C语言实现与解析

在算法学习和实际编程应用中,处理数组相关的问题是很常见的。其中,寻找两个正序数组的中位数就是一个经典的题目,不仅考验对数组操作的熟悉程度,还涉及到对算法效率的考量。今天,我们就来深入探讨如何使用C语言解决这一问题。

一、题目描述

给定两个大小分别为  m  和  n  的正序(从小到大)数组  nums1  和  nums2  ,要求找出并返回这两个正序数组的中位数。并且,算法的时间复杂度应该为  O(log (m + n))  。例如:

- 输入:nums1 = [1,3] , nums2 = [2]  ,输出: 2.000000  ,因为合并数组  = [1,2,3]  ,中位数是  2  。

- 输入: nums1 = [1,2] , nums2 = [3,4]  ,输出: 2.500000  ,因为合并数组  = [1,2,3,4]  ,中位数是  (2 + 3) / 2 = 2.5  。

二、解题思路

要解决这个问题,最直接的方法是先将两个数组合并成一个新的有序数组,然后根据新数组的长度是奇数还是偶数来计算中位数。具体步骤如下:

计算合并后数组的大小:

将两个数组的长度相加,得到合并后数组的总长度  n  。

分配内存并合并数组:

使用  malloc  函数动态分配一块足够大的内存空间来存储合并后的数组。然后,通过  memcpy  函数 nums1  和  nums2  的元素依次复制到新数组中。

对合并后的数组进行排序:

调用C标准库中的  qsort  函数对合并后的数组进行排序。 qsort  函数需要一个比较函数,这里我们定义了  cmp_int  函数来指定整数的比较规则。

计算中位数:

根据合并后数组的长度  n  的奇偶性来计算中位数。如果  n  是偶数,中位数是中间两个元素的平均值;如果  n  是奇数,中位数就是中间的那个元素。

释放内存:

使用完动态分配的内存后,通过  free  函数将其释放,以避免内存泄漏。

三、代码实现


 

c#include <stdio.h>#include <stdlib.h>#include <string.h>// 比较函数,用于qsort排序int cmp_int(const void*e1,const void*e2) {return *(int*)e1 - *(int*)e2;}// 寻找两个正序数组中位数的函数double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {// 计算合并后数组的大小int n = nums1Size + nums2Size;// 动态分配内存存储合并后的数组int *ps = (int*)malloc(sizeof(int) * (nums1Size + nums2Size));if (ps == NULL) {// 内存分配失败处理return 0.0; }// 将nums1的元素复制到新数组memcpy(ps, nums1, nums1Size * sizeof(int));// 将nums2的元素复制到新数组memcpy(ps + nums1Size, nums2, nums2Size * sizeof(int));// 对合并后的数组进行排序qsort(ps, n, sizeof(int), cmp_int);double temp;if (n % 2 == 0) {// 数组长度为偶数时计算中位数temp = (ps[n/2 - 1] + ps[n/2]) / 2.0;} else {// 数组长度为奇数时计算中位数temp = ps[n/2];}// 释放动态分配的内存free(ps);return temp;}

四、代码解析

比较函数  cmp_int :

该函数是为  qsort  函数定制的比较规则。它接受两个指向  void  类型的指针  e1  和  e2  ,在函数内部将它们强制转换为指向  int  类型的指针,然后返回两个整数的差值。 qsort  函数会根据这个差值来决定元素的排序顺序。

主函数  findMedianSortedArrays :

- 内存分配与检查:使用  malloc  分配内存给  ps  指针指向的数组。如果分配失败( ps  为  NULL ),直接返回  0.0  ,并在实际应用中可以进一步添加错误提示信息。

- 数组合并:

通过两次  memcpy  函数调用,分别将  nums1  和  nums2  的内容复制到新数组  ps  中。

- 数组排序:

调用  qsort  函数,传入合并后的数组  ps  、数组长度  n  、每个元素的大小  sizeof(int)  以及比较函数  cmp_int  ,完成排序操作。

- 中位数计算:

根据  n  的奇偶性,分别计算并存储中位数到  temp  变量中。

- 内存释放:

使用  free  函数释放之前动态分配的内存,确保程序不会出现内存泄漏问题。

五、时间复杂度分析

当前实现中,合并数组的操作时间复杂度为  O(m + n)  ,排序操作使用了  qsort  ,其平均时间复杂度为  O((m + n) log (m + n))  。虽然这个实现满足了功能需求,但时间复杂度并没有达到题目要求的  O(log (m + n))  。要达到题目要求的时间复杂度,可以使用二分查找的思路,通过划分两个数组的左右部分,利用中位数的性质来优化算法,不过这就需要更复杂的逻辑和代码实现。

六、总结

通过对寻找两个正序数组中位数这一问题的分析和C语言实现,我们熟悉了数组的基本操作、内存管理以及排序函数的使用。同时,也了解到当前实现与题目最优时间复杂度要求的差距。这启示我们在解决算法问题时,不仅要关注功能的实现,还要不断思考如何优化算法以提高效率。希望这篇博客能对大家理解和解决类似问题有所帮助。

相关文章:

解决寻找两个正序数组中位数问题:C语言实现与解析

在算法学习和实际编程应用中&#xff0c;处理数组相关的问题是很常见的。其中&#xff0c;寻找两个正序数组的中位数就是一个经典的题目&#xff0c;不仅考验对数组操作的熟悉程度&#xff0c;还涉及到对算法效率的考量。今天&#xff0c;我们就来深入探讨如何使用C语言解决这一…...

在 ArcGIS Pro 中描绘和绘制流域

查找数字高程模型 (DEM) 对于 DEM&#xff0c;我使用了USGS Lidar Explorer 地图。该地区有 10m 分辨率的 DEM。 设置坐标系 将坐标系设置为 UTM&#xff0c;以尽量减少失真&#xff0c;并使工具在后续过程中进行更精确的计算。对于俄勒冈州&#xff0c;这是 UTM 区域 10。 …...

在华为统信UOS中安装Anaconda,并配置PyCharm

这里写目录标题 1. 下载Anaconda安装包2. 打开终端3. 安装Anaconda4.下载安装PyCharm 1. 下载Anaconda安装包 首先打开 Anaconda官网 : https://www.anaconda.com/products/distribution&#xff0c;接受或拒绝网站投喂的饼干 然后输入自己的邮箱后&#xff0c;进入下载页面…...

谈谈 HTTPS 的工作原理,SSL / TLS 握手流程是什么?

一、HTTPS 核心机制&#xff1a;非对称加密 对称加密 HTTPS HTTP over TLS/SSL&#xff0c;通过 ​混合加密体系​ 解决三大问题&#xff1a; ​防窃听​ - 对称加密传输内容&#xff08;如 AES&#xff09;​防篡改​ - 数字签名验证数据完整性​防冒充​ - 数字证书验证服…...

Linux虚拟机网络配置-桥接网络配置

简介 本文档旨在指导用户如何在虚拟环境中配置Linux系统的桥接网络&#xff0c;以实现虚拟机与物理主机以及外部网络的直接通信。桥接网络允许虚拟机如同一台独立的物理机一样直接连接到物理网络&#xff0c;从而可以被分配一个独立的IP地址&#xff0c;并能够与网络中的其他设…...

‌Transformer架构

‌核心原理‌ ‌自注意力机制‌ 通过计算输入序列中每个位置与其他位置的关联权重&#xff08;Query-Key匹配&#xff09;&#xff0c;动态聚合全局信息&#xff0c;解决了传统RNN/CNN的长距离依赖问题‌。 实现公式&#xff1a;Attention(Q,K,V)softmax(QKTdk)VAttention(…...

Sat- nerf深度损失

首先损失函数定义在metrics.py,代码如下: class DepthLoss(torch.nn.Module):def __init__(self, lambda_ds1.0):super().__init__()# 初始化lambda_ds参数&#xff0c;用于调节深度损失的权重&#xff0c;并且将其缩小为原来的1/3self.lambda_ds lambda_ds / 3.# 初始化均方…...

c++的多态

1.多态的概念 多态&#xff0c;通俗来说&#xff0c;就是多种形态 多态分为编译时多态(静态多态)和运⾏时多 态(动态多态) 静态多态主要是函数重载和函数模板&#xff0c;它们传不同类型的参数就可以调⽤不同的函数&#xff0c;通过参数不同达到多种形态&#xff0c;之所以叫…...

基于 Rust 与 GBT32960 规范构建高并发、高可用、高扩展服务端程序

一、需求背景 如今&#xff0c;数字化发展特别快&#xff0c;各种设备和系统之间要频繁地交换数据&#xff0c;而且这个过程变得越来越复杂。很多行业都有难题&#xff0c;既要处理大量的数据&#xff0c;又得快速响应各种命令。比如说在智能交通这一块&#xff0c;路上跑的车…...

《宝塔 Nginx SSL 端口管理实战指南:域名解析、端口冲突与后端代理解析》

&#x1f4e2; Nginx & SSL 端口管理分析 1️⃣ 域名解析与 SSL 申请失败分析 在使用宝塔申请 www.mywebsite.test 的 SSL 证书时&#xff0c;遇到了解析失败的问题。最初&#xff0c;我认为 www 只是一个附加的前缀&#xff0c;不属于域名的关键部分&#xff0c;因此只为…...

iOS 实现UIButton自动化点击埋点

思路&#xff1a;我们HOOK UIControl的 addtarget:action:forControlEvents方法&#xff0c;交换UIControl的 addtarget:action:forControlEvents 方法的实现&#xff0c; 在交换的方法中添加原来响应的同时&#xff0c;再添加一个埋点响应&#xff0c;该响应方法实现了点击埋点…...

Java 并行流(Parallel Stream)详解

并行流是Java 8引入的高效处理集合数据的工具&#xff0c;通过多线程加速计算。以下是其核心概念、使用方法及注意事项的详细指南&#xff1a; 1. 核心概念与原理 并行处理机制&#xff1a;将数据分割为多个块&#xff0c;利用Fork/Join框架在多个线程上并行处理&#xff0c;…...

开源软件的版权保护措施

开源软件的版权保护措施主要有以下几方面&#xff1a; 著作权保护 明确版权归属与许可使用&#xff1a;开源软件的源代码是著作权法保护的对象&#xff0c;作者享有复制权、发行权、改编权等专有权益。通过开源协议&#xff0c;作者明确授权用户使用、复制和修改软件&#xf…...

11.24 SpringMVC(1)@RequestMapping、@RestController、@RequestParam

一.RequestMapping("/user")//HTTP 请求方法既支持get也支持post&#xff0c;可表示为类路径与方法路径 二.RequestMapping(value "/m7", method {RequestMethod.POST, RequestMethod.GET}) value这个参数指定了请求的 URL 路径。method 参数指定了允许…...

杰和科技GDSM-C数字化信息发布管理系统,信息触达无死角,更全面

在数字化时代&#xff0c;信息的高效传递与精准管理成为商业、教育、公共服务等领域的核心需求。传统信息发布模式常面临设备分散难管控、内容更新滞后、多屏协同效率低等问题。 杰和科技为此开发了一套数字化信息发布管理系统GDSM-C&#xff08;简称 GDSM-C&#xff09;系统&a…...

如何停止Oracle expdp/impdp job

一、停止 expdp job举例 1.执行 expdp 命令 $ expdp rui/rui DIRECTORYdmp_dir dumpfilestudyfull_expdp.dmp FULLy logfilestudyfullexpdp.log job_nameexpdp_job2.查看在运行的作业名称 SQL> select job_name,state from dba_datapump_jobs; JOB_NAME …...

Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序

文章目录 引言I 示例对象II List 按时间字段倒序排序: 使用 `Stream` 和 `Comparator` 排序方法 1:使用 `Comparator.comparing`方法 2:使用 `Comparator.reversed`方法 3:自定义 `Comparator`输出结果III 注意事项**时间字段类型**:**空值处理**:IV 总结引言 案例:在线用…...

MySQL零基础教程14—子查询

子查询比较简单&#xff0c;我们还是通过案例引入。 有时候我们查询的时候&#xff0c;需要用到的不止一个表的数据&#xff0c;比如下面的场景&#xff1a; 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下&#xff1a; 从三张表的结构&#xff0c;我们不难…...

考研408数据结构线性表核心知识点与易错点详解(附真题示例与避坑指南)

一、线性表基础概念 1.1 定义与分类 定义&#xff1a;线性表是由n&#xff08;n≥0&#xff09;个相同类型数据元素构成的有限序列&#xff0c;元素间呈线性关系。 分类&#xff1a; 顺序表&#xff1a;元素按逻辑顺序存储在一段连续的物理空间中&#xff08;数组实现&…...

Microk8s Ingress实现七层负载均衡

Microk8s Ingress是什么 Ingress是k8s的一种资源对象&#xff0c;用于管理外部对集群内服务的访问, 它通过提供一个统一的入口点&#xff0c;将外部流量路由到集群内部的不同服务。 Microk8s Ingress用于解决什么问题 k8s集群中服务默认只能在集群内访问。 如果需要从外部访…...

部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤

前文已经讲解过Windows Server自带的“工作文件夹”功能&#xff0c;现以Windows Server 2025为例介绍部署工作文件夹的完整步骤&#xff1a; 为了确保您能够顺利部署和充分利用工作文件夹的功能&#xff0c;我将按照以下步骤进行讲解。 请注意&#xff0c;在域环境中部署工作…...

前缀和算法 算法4

算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…...

Excel 豆知识 - XLOOKUP 为啥会出 #N/A 错误

XLOOKUP有的时候会出 #VALUE! 这个错误。 因为这个XLOOUP有个参数叫 找不到时的返回值&#xff0c;那么为啥还会返回 #VALUE! 呢&#xff1f; 可能还有别的原因&#xff0c;但是主要原因应该就是 检索范围 和 返回范围 不同。 比如这里检索范围在 B列&#xff0c;是 4-21&…...

ZK Rollup

ZK Rollup 通过生成零知识证明来确保所有提交的交易都是有效的。生成零知识证明的过程涉及复杂的密码学运算&#xff0c;通常使用的是 zk-SNARK&#xff08;零知识简洁非互动知识论证&#xff09;或 zk-STARK&#xff08;零知识可扩展透明知识论证&#xff09;。以下是 ZK Roll…...

UI设计——新拟态手机主题锁屏设计分享

新拟态手机主题锁屏设计分享 给大家展示一款新式手机主题锁屏设计作品。 整体设计采用简洁的灰白主色调&#xff0c;搭配亮眼的橙色元素&#xff0c;形成鲜明对比&#xff0c;视觉效果清爽又不失活力。 上方显示大数字时钟 “20:36”&#xff0c;日期 “04/11 星期一” 以及天…...

Kafka面试题及原理

1. 消息可靠性&#xff08;不丢失&#xff09; 使用Kafka在消息的收发过程都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker 幂等方案&#xff1a;【分布式锁、数据库锁&#xff08;悲观锁、乐观锁…...

leetcode 238. 除自身以外数组的乘积

题目如下 数据范围 使用两个辅助数组分别存从前乘到后面和从后到前后面再计算就行。 &#xff08;f数组没处理好还包含了本不能乘于的数所以要向后移动一位&#xff09;。通过代码 class Solution { public:vector<int> productExceptSelf(vector<int>& n…...

DeepSeek 与 ChatGPT 终极对决:谁才是 AI 语言之王?

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 引言 在当今科技飞速发展的时代&#xff0c;人工智能已然成为推动各领域变革的核心力量&#xff…...

python爬虫:pyspider的详细使用

文章目录 一、pyspider介绍1.1 核心概念1.2 与其他爬虫框架的比较二、 安装 pyspider三、编写爬虫脚本四、运行和监控爬虫4.1 启动爬虫4.2 监控任务状态4.3 任务管理五、高级功能5.1 分布式爬取5.2 JavaScript 渲染5.3 数据存储5.4 定时任务5.5 错误处理和重试机制六、示例:采…...

CSS—text文本、font字体、列表list、表格table、表单input、下拉菜单select

目录 1.文本 2.字体 3.列表list a.无序列表 b.有序列表 c.定义列表 4.表格table a.内容 b.合并单元格 3.表单input a.input标签 b.单选框 c.上传文件 4.下拉菜单 1.文本 属性描述color设置文本颜色。direction指定文本的方向 / 书写方向。letter-spacing设置字符…...

宝塔webhooks与码云实现自动部署

1. 宝塔面板配置Webhook 登录宝塔面板&#xff0c;进入「软件商店」→ 搜索「Webhook」并安装。添加Webhook&#xff1a; 名称&#xff1a;自定义&#xff08;如 Gitee自动部署&#xff09;脚本&#xff1a;编写部署脚本&#xff0c;示例如下&#xff1a;#!/bin/bash# 项目路径…...

迷你世界脚本聊天接口:Chat

聊天接口&#xff1a;Chat 彼得兔 更新时间: 2023-04-26 10:18:43 具体函数名及描述如下: 序号 函数名 函数描述 1 sendChat(...) 发送聊天消息(默认全部玩家) 2 sendSystemMsg(...) 发送系统消息(默认全部玩家) sendChat 参数及类型&#xff1a; content:s…...

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建&#xff0c;到 OpenCV 实战 在树莓派上运行摄像头&#xff0c;在官方的 Raspberry Pi OS 可能很简单&#xff0c;但在 Yocto 项目中&#xff0c;需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...

多镜头视频生成、机器人抓取、扩散模型个性化 | Big Model weekly第58期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介绍了一种名为GLM-4-Voice的智能且类人化的端到端语音聊天机器人。它支持中文和英文&#xff0c;能够进行实时语音对话&a…...

Llama 2中的Margin Loss:为何更高的Margin导致更大的Loss和梯度?

Llama 2中的Margin Loss&#xff1a;为何更高的Margin导致更大的Loss和梯度&#xff1f; 在《Llama 2: Open Foundation and Fine-Tuned Chat Models》论文中&#xff0c;作者在强化学习与人类反馈&#xff08;RLHF&#xff09;的Reward Model训练中引入了Margin Loss的概念&a…...

边缘计算收益低的三大指标

边缘计算收益低的三大指标主要包括以下方面&#xff1a; 1. 资源贡献不足&#xff1a; 边缘计算的收益通常基于所提供的带宽、存储和计算资源来计算。如果设备的网络带宽有限、在线时间短或提供的存储容量较小&#xff0c;可能无法满足平台设定的最低贡献标准&#xff0c;从而导…...

基于单片机的智能宿舍管理系统(论文+源码)

2.1总体方案设计 本课题为智能宿舍的设计&#xff0c;整个系统架构如图2.1所示&#xff0c;整个系统在器件上包括了主控制器STM32单片机&#xff0c;LD3320语音识别模块&#xff0c;按键模块&#xff0c;串口通信模块&#xff0c;照明模块&#xff0c;窗帘控制模块家电控制模块…...

(下:补充——五个模型的理论基础)深度学习——图像分类篇章

目录 1.1 卷积神经网络基础 3.1 AlexNet网络结构详解与花分类数据集下载 4.1 VGG网络详解及感受野的计算 5.1 GoogLeNet网络详解 6.1 ResNet网络结构&#xff0c;BN以及迁移学习详解 总结&#xff08;可以直接看总结&#xff09; 1.1 卷积神经网络基础 视频讲解&#xf…...

SVN 简介

SVN 简介 引言 版本控制系统(Version Control System,VCS)是软件开发过程中不可或缺的工具之一。它能够帮助开发者管理代码的版本,追踪代码变更,协同工作,以及确保代码的稳定性和安全性。Subversion(简称SVN)是一种流行的版本控制系统,本文将为您详细介绍SVN的基本概…...

【前端场景题】如何应对页面请求接口的大规模并发问题

如何应对页面请求接口的大规模并发问题&#xff0c;尤其是前端方面的解决方案&#xff0c;并且需要给出详细的代码解释。首先&#xff0c;我需要仔细阅读我搜索到的资料&#xff0c;找出相关的信息&#xff0c;然后综合这些信息来形成答案。 首先看&#xff0c;它提到前端优化策…...

Kafka 为什么会消息堆积?

Kafka 定期清理 Partition&#xff0c;但消息堆积&#xff08;backlog&#xff09; 依然可能发生&#xff0c;主要是因为 Kafka 的清理机制和消息消费进度是两回事。我们可以用一个 快递仓库 的类比来解释。 类比&#xff1a;Kafka 就像一个快递仓库 生产者&#xff08;Produc…...

毕业项目推荐:基于yolov8/yolo11的苹果叶片病害检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

十四届蓝桥杯JAVA-b组-合并石子

点我写题 思路&#xff1a;区间dp和缝合dp板子题&#xff0c;先用个dp[i][j][k]表示考虑区间[i,j]合并成颜色k的最小代价&#xff0c;然后用min[i][j]存一下[i,j]区间合并的最小代价&#xff0c;即min(dp[i][j][0-2])&#xff0c;has[i][j]表示区间[i,j]是否能合并&#xff0c…...

【Maven】入门介绍 与 安装、配置

文章目录 一、Maven简介1. Maven介绍2. Maven软件工作原理模型图 二、Maven安装和配置1. Maven安装2. Maven环境配置3. Maven功能配置4. IDEA配置本地Maven软件 一、Maven简介 1. Maven介绍 https://maven.apache.org/what-is-maven.html Maven 是一款为 Java 项目管理构建、…...

物联网小范围高精度GPS使用

在园区内实现小范围高精度GPS&#xff08;全球定位系统&#xff09;定位&#xff0c;通常需要结合多种技术来弥补传统GPS在精度和覆盖范围上的不足。以下是实现小范围高精度GPS定位的解决方案&#xff0c;包括技术选择、系统设计和应用场景。 一、技术选择 在园区内实现高精度…...

突破Ajax跨域困境,解锁前端通信新姿势

一、引言 在当今的 Web 开发领域&#xff0c;前后端分离的架构模式已经成为主流&#xff0c;它极大地提升了开发效率和项目的可维护性。在这种开发模式下&#xff0c;前端通过 Ajax 技术与后端进行数据交互&#xff0c;然而&#xff0c;跨域问题却如影随形&#xff0c;成为了开…...

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其所有依赖&#xff08;代码、运行时、系统工具、库等&#xff09;打包成一个轻量级、可移植的“容器”&#xff0c;实现 “一次构建&#xff0c;随处运行”。 1、容器&#xff08;Container…...

【漫话机器学习系列】111.指数之和的对数(Log-Sum-Exp)

在计算机科学和机器学习中&#xff0c;经常会遇到计算指数和的对数的情况&#xff0c;例如&#xff1a; 然而&#xff0c;由于指数函数 的值增长极快&#xff0c;直接计算可能会导致数值上溢&#xff08;overflow&#xff09;或下溢&#xff08;underflow&#xff09;&#xf…...

算法004——盛最多水的容器

力扣——盛最多水的容器点击即可跳转 当我们选择1号线和8号线时&#xff0c;下标为 1 和 8 形成容器的容积的高度是由 较矮的决定的&#xff0c;即下标为 8 的位置&#xff1b; 而宽度则是 1到8 之间的距离&#xff0c;为 8-17&#xff0c;此时容器的容积为 7 * 7 49。 当我…...

前端内存泄漏的几种情况及方案

前端内存泄漏是常见但容易被忽视的问题&#xff0c;可能导致页面卡顿、崩溃或性能下降。以下是几种典型场景及解决方案&#xff1a; 1. 未清理的全局变量 场景&#xff1a; 意外创建全局变量&#xff08;未使用 var/let/const&#xff09;。主动挂载到 window 的大对象未释放…...