leedcode 合并两个有序数组 切片 原地修改
使用 nums1[:m + n] = nums1_new 时,这是在原地修改 nums1 列表。
具体来说,这个语句使用切片将 nums1 中前 m + n 个元素替换为 nums1_new 中的元素。
这样做的结果是,nums1 的原始内存空间被修改,而不是创建一个新的列表对象。
使用 nums1 = nums1_new,这将创建一个新的列表对象,并让 nums1 这个变量指向这个新的对象。
原始的 nums1 列表对象将被丢弃(可能在后续的垃圾回收中被清理)。
在 Python 中,对列表使用切片和赋值,例如 nums1[:m + n] = nums1_new,是一种原地修改列表的方法。
这意味着你修改的是原始列表对象,而不是创建一个新的对象。这对于节省内存和避免不必要的对象创建是有利的。
class Solution: def merge(self, nums1, m, nums2, n) : """ Do not return anything, modify nums1 in-place instead. """ nums1_new=nums1[:m] nums2_new=nums2[:n] num = nums1_new+nums2_new num.sort() nums1.clear() for i in range(len(num)): nums1.append(num[i]) print(nums1)
从尾巴开始的归并排序
class Solution(object): def merge(self, nums1, m, nums2, n): # 计算合并后的数组的末尾索引 k = m + n - 1 # 当两个数组均还有元素未比较时,进行合并 while m > 0 and n > 0: # 如果 nums1 中的元素较大,则将其放入合并后的数组的末尾 if nums1[m - 1] > nums2[n - 1]: nums1[k] = nums1[m - 1] m -= 1 else: # 如果 nums2 中的元素较大,则将其放入合并后的数组的末尾 nums1[k] = nums2[n - 1] n -= 1 # 向前移动合并后的数组的末尾索引 k -= 1 # 如果 nums2 中还有未合并的元素,将其复制到合并后的数组的前面 nums1[:n] = nums2[:n]
分类:
leedcode刷题记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)