【排序】88.合并两个有序数组
题目链接: https://leetcode.cn/problems/merge-sorted-array/
详情:
这题看起来像是数组题而不是排序题。
分析:
言归正传,这题说了是有序数组,要求在nums1上原地修改。
所以我们就要从后往前遍历,这样的话,可以把前面的位置腾出地方,不需要用额外的存储空间。
代码:
class Solution: def merge(self, nums1, m, nums2, n) -> None: """ Do not return anything, modify nums1 in-place instead. """ # nums1, nums2的指针, 分别指向"最后一个元素" f_ptr, s_ptr = m-1, n-1 # 总指针, 指向nums真正的最后一个元素 r_ptr = len(nums1)-1 while r_ptr >= 0 and f_ptr >= 0 and s_ptr >= 0: if nums1[f_ptr] >= nums2[s_ptr]: nums1[r_ptr] = nums1[f_ptr] f_ptr -= 1 else: nums1[r_ptr] = nums2[s_ptr] s_ptr -= 1 r_ptr -= 1 while r_ptr >= 0 and s_ptr >= 0: nums1[r_ptr] = nums2[s_ptr] r_ptr -= 1 s_ptr -= 1
也可以这样:
class Solution: def merge(self, nums1, m: int, nums2, n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ for i in range(len(nums1)-1, -1, -1): if m >0 and n > 0: if nums1[m-1] > nums2[n-1]: nums1[i] = nums1[m-1] m -= 1 else: nums1[i] = nums2[n-1] n -= 1 elif m > 0: nums1[i] = nums1[m-1] m -= 1 elif n > 0: nums1[i] = nums2[n-1] n -= 1
分类:
leetcode简单题
, leetcode-排序
标签:
leetcode-排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)