2024年力扣面试题--合并两个有序数组(1),2024年最新面试杀面试官

专业技能

一般来说,面试官会根据你的简历内容去提问,但是技术基础还有需要自己去准备分类,形成自己的知识体系的。简单列一下我自己遇到的一些题

最近得空把之前遇到的面试题做了一个整理,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,还有网上刷到的,我都统一的整理了一下,希望对大家有用。

其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器等等

由于文章篇幅有限,仅展示部分内容

提示:

nums1.length == m + nnums2.length == n0 <= m, n <= 2001 <= m + n <= 200-109 <= nums1[i], nums2[j] <= 109


#### **分析**



假设有两个有序数组nums1和nums2,分别有m和n个元素。我们希望将它们合并成一个有序数组,并存储在nums1中。首先,创建三个指针:- p1指向nums1的末尾(即索引为m-1处)- p2指向nums2的末尾(即索引为n-1处)- p指向合并后的nums1的末尾(即索引为m+n-1处)然后,进行如下循环:- 比较nums1[p1]和nums2[p2]的大小:- 如果nums1[p1] >= nums2[p2],将nums1[p1]放入nums1[p]的位置,然后将p1和p分别向前移动一位。- 如果nums1[p1] < nums2[p2],将nums2[p2]放入nums1[p]的位置,然后将p2和p分别向前移动一位。- 当其中一个数组遍历完(即p1或p2小于0)时,退出循环。如果nums2中还有剩余的元素,直接将剩余的元素复制到nums1中对应的位置。最后,nums1中就是合并后的有序数组。


#### **Python代码实现**



要解答这个问题,可以使用双指针法来合并两个有序数组。
首先,创建两个指针p1和p2,分别指向nums1的末尾(即m-1)和nums2的末尾(即n-1)。
同时,创建一个指针p用于指向合并后的nums1的末尾(即m+n-1)。
然后,比较nums1[p1]和nums2[p2]的大小,将较大的元素放入nums1[p]的位置
并将对应的指针向前移动一位。重复这个过程直到其中一个数组遍历完
如果nums2中还有剩余的元素,直接将剩余的元素复制到nums1中对应的位置



def merge(nums1, m, nums2, n):
p1 = m - 1
p2 = n - 1
p = m + n - 1

while p1 >= 0 and p2 >= 0:
    if nums1[p1] >= nums2[p2]:
        nums1[p] = nums1[p1]
        p1 -= 1
    else:
        nums1[p] = nums2[p2]
        p2 -= 1
    p -= 1

# 将nums2中剩余的元素复制到nums1中
nums1[:p2 + 1] = nums2[:p2 + 1]

测试示例

nums1 = [1,2,3,0,0,0]
m = 3
nums2 = [2,5,6]
n = 3

merge(nums1, m, nums2, n)
print(nums1) # 输出:[1, 2, 2, 3, 5, 6]



以上代码通过比较两个数组的末尾元素大小,并将较大的元素放入nums1的末尾位置,

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

html5

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值