无锡网站维护公司视频教学网站怎么做

张小明 2026/1/12 20:36:30
无锡网站维护公司,视频教学网站怎么做,做网站好用的cms,wordpress文章生成分享图片不显示一、什么是时间复杂度和空间复杂度#xff1f;——用5段代码讲明白在算法世界里#xff0c;我们不只关心“能不能跑通”#xff0c;更关心“跑得快不快”、“占不占地方”。这就是时间复杂度和空间复杂度要解决的问题。时间复杂度#xff1a;衡量“执行步骤”的增长趋势不是…一、什么是时间复杂度和空间复杂度——用5段代码讲明白在算法世界里我们不只关心“能不能跑通”更关心“跑得快不快”、“占不占地方”。这就是时间复杂度和空间复杂度要解决的问题。时间复杂度衡量“执行步骤”的增长趋势不是看实际运行几毫秒而是看随着输入数据变大操作次数怎么变。我们用大O表示法Big O来描述这个“趋势”。来看几个经典例子例1线性遍历 →O(n)来自1.js// T(n) 3n3 function traverse(arr) { var len arr.length; // 1次 for (let i 0; i len; i) { // 循环 n 次 console.log(arr[i]); // 每次循环1次 } } // T(n) 1 1 n 1 n n 3n3 → 忽略常数和低阶项 → O(n)解释数组越长打印次数越多成正比关系。就像你数100个人的名字肯定比数10个人花10倍时间。例2双重循环 →O(n²)来自2.jsfunction traverse(arr) { var outlen arr.length; for (var i 0; i outlen; i) { var inlen arr[i].length; for (var j 0; j inlen; j) { console.log(arr[i][j]); } } } // T(n) ≈ 4n² ... → O(n²)解释比如一个 n×n 的表格你要把每个格子都点一遍总共点 n² 次。数据量翻倍操作次数变成4倍很可怕。例3指数级跳跃 →O(log n)来自3.jsfor (var i 1; i len; i i * 2) { console.log(arr[i]); } // T(n) 2logn 4 → O(log n)解释i 每次翻倍1→2→4→8...所以循环次数是 log₂(len)。比如 len1024只循环10次这是非常高效的节奏像二分查找。例4额外开数组 →O(n)空间来自4.jsfunction init(n) { var arr []; // 新开辟空间 for (var i 0; i n; i) { arr[i] i; } return arr; } // S(n) O(n)空间复杂度衡量额外内存占用。这里新建了一个长度为 n 的数组所以空间是 O(n)。例5原地操作 →O(1)空间还是1.js// S(1) 因为只有一个arr其他作为参数没有额外的内存开销没有 new 数组、没递归、没哈希表只是用几个变量i, len所以空间是常数级O(1) —— 最省✅总结一句话时间复杂度看“操作次数”随输入规模怎么涨。空间复杂度看“额外内存”用了多少。我们追求时间快 空间省二、实战力扣88题《合并两个有序数组》——三指针 原地合并题目要求nums1长度为m n前m个是有用数字后n个是 0预留空间nums2长度为n把nums2合并进nums1最终nums1变成一个有序数组不能返回新数组必须原地修改 nums1错误思路从前向后合并很多人第一反应用两个指针从前往后比小的放前面。但问题来了nums1 后面有空位前面却有数据如果你把小的数往前面插会覆盖掉还没处理的 nums1 元素比如nums1 [1,2,3,0,0,0], m3 nums2 [2,5,6], n3如果从前往后第一步把 1 放好没问题但第二步要把 2来自 nums2放进去时nums1[1] 原本是 2会被覆盖而那个 2 还没被处理所以不能从前向后正确思路从后往前 三指针利用 nums1尾部有空位的特点从最大的数开始填就不会覆盖未处理的数据来看代码一字不变function merge(nums1, m, nums2, n) { // 数组是连续的存储空间所以可以从后往前合并 let i m - 1; // i 是 nums1 里面“有用数字”的最后一位的位置从0开始数 let j n - 1; // j 是 nums2 里面“有用数字”的最后一位的位置 let k m n - 1; // k 是 nums1 整个数组最后一位的位置因为nums1已经预留了足够空间 // 数组是有序的 while(i 0 j 0) { // 只要 nums1 和 nums2 都还有数字没比完就继续比 if (nums1[i] nums2[j]) { // 如果 nums1 当前的数字比 nums2 的大 nums1[k] nums1[i]; // 就把大的那个放到 nums1 的最后面k的位置 i--; // 然后 nums1 的指针往前面走一步看下一个数字 } else { // 否则nums2 的数字更大或一样大 nums1[k] nums2[j]; // 把 nums2 的这个数字放到 nums1 的最后面 j--; // 然后 nums2 的指针往前面走一步 } k--; // 不管放了谁最后面的位置都要往前挪一格准备放下一个 } while(j 0) { // 如果 nums2 还剩下一些小数字没放完nums1已经放完了 nums1[k] nums2[j]; // 就把这些剩下的小数字一个个放到 nums1 前面空着的位置 j--; // 每放一个nums2 的指针往前走 k--; // 放的位置也往前走 } }图解三指针工作过程初始状态nums1 [1, 2, 3, 0, 0, 0] ↑ ↑ ↑ i | k | nums2 [2, 5, 6] ↑ jStep 1: 比较 nums1[i]3 和 nums2[j]6 → 6 更大 → 放到 k 位置nums1 [1, 2, 3, 0, 0, 6] ↑ ↑ ↑ i | k | nums2 [2, 5, 6] ↑ jStep 2: 比较 3 vs 5 → 5 更大nums1 [1, 2, 3, 0, 5, 6] ↑ ↑ ↑ i | k | nums2 [2, 5, 6] ↑ jStep 3: 比较 3 vs 2 → 3 更大nums1 [1, 2, 3, 3, 5, 6] ↑ ↑ ↑ i | k | nums2 [2, 5, 6] ↑ jStep 4: 比较 2 vs 2 → 相等放 nums2 的或 nums1 的也行nums1 [1, 2, 2, 3, 5, 6] ↑ ↑↑ i k nums2 [2, 5, 6] (j-1结束)此时j 0说明 nums2 已全部放入。而 nums1 剩下的 [1,2] 本来就在正确位置不用动 注意如果 nums1 先耗尽i0但 nums2 还有剩就需要第二个 while 循环把剩下的 nums2 元素补到前面。复杂度分析时间复杂度O(m n)每个元素最多被访问一次总共 mn 个元素。空间复杂度O(1)只用了 i, j, k 三个变量没有额外数组完美符合“原地合并”要求。为什么这个方法聪明利用了“有序”特性最大值一定在两个数组的末尾。利用了“预留空间”从后往前写不会踩到自己的脚。三指针分工明确i负责 nums1 的有效数据j负责 nums2 的所有数据k负责写入位置三、结语算法之美在于洞察结构这道题看似简单却完美展示了如何通过分析数据结构特点有序 尾部空闲设计高效策略如何用极低的空间代价O(1)完成任务为什么时间复杂度 O(mn)是最优的每个元素至少要看一次。下次遇到“合并有序数组”别再想着新建数组了试试从后往前三指针出击记住好的算法不是代码多炫而是恰到好处地利用已知条件。Happy Coding
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何评价小米的网站建设网站ip地址 转向域名

FaceFusion 能否对接 Dropbox?跨平台文件同步无忧在数字内容创作日益依赖人工智能的今天,创意工作者常常面临一个看似简单却异常棘手的问题:如何在手机、笔记本、工作站和云端服务器之间无缝流转大量图像与视频文件?尤其是在使用像…

张小明 2026/1/13 2:38:52 网站建设

美业设计网站手机怎么在微信公众号发文章

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个模拟企业级Maven多模块项目,重现org.codehaus.plexus.component.repository.exception异常。要求:1. 包含父POM和3个子模块;2. 模拟依赖…

张小明 2026/1/2 18:39:00 网站建设

怎么做微信电影网站wordpress编辑器 代码

软件设计模式深度解析与应用 在软件开发领域,模式是解决常见问题的有效手段。随着行业的发展,我们会不断发现更多的模式。理解模式背后的驱动力,能让我们更好地运用它们。下面将详细介绍几种常见的模式,包括抽象工厂模式和适配器模式。 模式的分析维度 在探讨具体模式之…

张小明 2026/1/9 10:00:24 网站建设

企业网站模板库北京 公司网站制作

LobeChat在金融客服场景中的落地案例分析 在一家大型商业银行的客户服务中心,每天要处理数以万计的咨询请求——从“我的贷款审批进度如何”到“理财产品是否保本”,问题五花八门。传统客服系统依赖人工坐席和简单的关键词匹配机器人,不仅响应…

张小明 2026/1/11 0:59:20 网站建设

朝阳区北京网站建设档案网站建设愿景

突破格式壁垒:QQ音乐加密文件全平台播放解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结…

张小明 2026/1/10 12:44:38 网站建设

蓝色扁平化网站做网站常见问题模板

永磁同步电机自抗扰控制模型ADRC永磁同步电机(PMSM)控制最头疼的就是各种扰动——负载突变、参数漂移、模型非线性,这时候自抗扰控制(ADRC)就派上用场了。这玩意儿不跟你死磕精确数学模型,反而直接暴力拆解…

张小明 2026/1/4 2:28:44 网站建设