张小明 2026/1/9 16:22:07
可以在哪个网站做封面赚钱,网络安全工程师需要学什么,中国工业信息网,付费查看下载wordpress虚拟资源LeetCode 面试经典150题之合并两个有序数组
一、题目
1.题目描述
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2#xff0c;另有两个整数 m 和 n #xff0c;分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中#xff0c;使合并后的数组同样按 非…LeetCode 面试经典150题之合并两个有序数组一、题目1.题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中使合并后的数组同样按 非递减顺序 排列。注意最终合并后数组不应由函数返回而是存储在数组 nums1 中。为了应对这种情况nums1 的初始长度为 m n其中前 m 个元素表示应合并的元素后 n 个元素为 0 应忽略。nums2 的长度为 n 。2.题目分析本题是一个原地排序题可以采用两种策略一种是先将数组2插入数组1再进行排序另一种是再插入的时候就进行比较让数组2插入的每个数字都在正确的位置。下面将介绍四种方法。二、具体方法1.调用函数快速实现排序nums1[m:]nums2 nums1.sort()这种方法通过调用sort函数自动的实现排序。但是本题要考察的就是排序因此比太建议采用这种方法。但是在现实操作场景中这种方法能够快速达到目标。2.双指针排序法nums1[m:mn]nums2 left0rightmwhileleftrightmn:ifnums1[left]nums1[right]:tempnums1[right]nums1[left1:right1]nums1[left:right]nums1[left]temp left1right1else:left1首先我们需要跟前面一样先将数组2整个并入到数组1当中再通过一个左指针一个右指针分别来指向原本为数组1中的数和原本来自数组2中的数。如果右指针的数比左指针的小那就需要将左指针当先指向及右指针当前指向之前的数整体往后移动一个单位再将当前有指针指向的数放入左指针当前指向的位置。最后右指针和左指针都要往后移动一个单位。后面重复这个操作。3.冒泡排序法nums1[m:mn]nums2foriinrange(mn-1):forjinrange(mn-1-i):ifnums1[j]nums1[j1]:tempnums1[j]nums1[j]nums1[j1]nums1[j1]temp冒泡排序法同样是先将两个数组合并再根据冒泡排序算法的基本步骤完成后面的排序。这里简要介绍冒泡排序的基本思想先从头到尾遍历这个数组每次找到相邻的两个数如果前面的数比后面的数大那就将前后的数调换位置。然后再比较刚才比较的第二个数和它的后面的数的大小 重复这个操作。一直比较到最后一个数。这样我们每次都将大的数往后移动最后一次循环后最大的数就到了最后面。那么这个数组的最后一个已经确定了我们可以将它看作大小为原来减1的要排序数组。重复上一个循环的操作。直至所有的数都排好序。需要注意的冒泡排序的循环的参数。在外层循环里面我们需要对大小为N的数组进行排序那么只需要对N-1个数进行排序就行也就是说外层循环只需要执行N-1次。对于内层循环因为我们每次排序都是从第一个开始的并且每进行一次外层循环数组的后面位置确定的数就增加1个因此内层循环进行N-i次即可。4.双指针插入排序i0j0whilejn:ifi(jm):ifnums1[i]nums2[j]:i1else:forkinrange(mj-1,i-1,-1):nums1[k1]nums1[k]nums1[i]nums2[j]i1j1else:nums1[i]nums2[j]j1i1这个方法是在插入的时候就将数组2中的数放入其正确的位置。这里循环结束的条件是数组2里面的数全部都插入完毕即j n。只有当指针i当前指向的是数组1的有效数字的时候才需要对两个数组当前所指的数的大小进行判断。数组1的有效范围原本为m但是由于每插入一个数组2中的数其有效长度都会1因此当插入j个数组2中的数的时候其有效长度就变为jm了。如果数组1当前所指的数小于等于数组2中当前被指的数那么是不需要插入的指针i直接往后移动一个单位。如果指针i当前所指的数组1中的数是大于指针j当前所指的数组2中的数那么我们要先把i当前所指的位置及其之后的有效数字都往后移动一个然后将j所指的数插入i当前所指的位置。并且由于j所指的数已经插入因此j需要往后移动而i所指的是刚插入的数因此也要往后移动一个。然后继续进行比较。直至数组1中的所有有效数字都被比较完毕但是数组2中还有数没插入时直接将数组2中剩下的数插入即可。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
公司建设网站制作有人找做网站的
基于雨流计数法的源-荷-储双层协同优化配置 主要内容:代码主要做的是一个源荷储优化配置的问题,采用双层优化,外层优化目标的求解依赖于内层优化的储能系统充放电曲线,基于储能系统充放电曲线,采用雨流计数法电池健康状…
那个网站做图片好看茶的网站制作
老年人的 Windows 7 计算:电子邮件使用与数码摄影入门 1. 电子邮件使用 1.1 输入收件人地址 在地址栏输入收件人地址,你只需选择收件人,点击“收件人:”按钮,最后点击“确定”。地址会自动插入到地址框中。你可以通过将其他人的名字添加到“收件人:”框,或者添加到“…
长宁区科技网站建设苏州做儿童场馆门票包票的网站
网络安全数据可视化分析与攻击欺骗技术解析 在网络安全领域,对海量数据进行有效分析和处理是保障系统安全的关键。通过可视化技术,我们可以更直观地了解网络中的异常活动,同时也需要警惕攻击者利用欺骗手段绕过入侵检测系统(IDS)。本文将详细介绍网络安全数据的可视化分析…
网站建设重要石家庄网站建设专家
深度学习环境配置痛点终结者:YOLOv8完整镜像上线 在智能安防摄像头自动识别可疑行为、自动驾驶车辆实时感知周围障碍物,或是工厂流水线上精准检测产品缺陷的背后,目标检测技术正扮演着“视觉大脑”的角色。而在这类应用的开发过程中ÿ…
陕西省城乡建设学校网站网站设计 教程
ST7789V SPI驱动实战指南:从硬件连接到稳定显示的全链路解析你有没有遇到过这样的场景?新买的2.4寸TFT屏,接上STM32后只显示白屏、花屏,或者图像上下颠倒?明明代码烧进去了,屏幕却毫无反应。如果你正在使用…