| 合并排序的数组

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。
编写一个方法,将 B 合并入 A 并排序。

初始化 A 和 B 的元素数量分别为 m 和 n。

示例:

输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3

输出: [1,2,2,3,5,6]
说明:

A.length == n + m

|两种思路题解

# 题解一
class Solution:def merge(self, A: List[int], m: int, B: List[int], n: int) -> None:"""Do not return anything, modify A in-place instead.解题思路: 1.把数组B 追加到数组A的第m个元素的后面2.利用快速排序对数组A进行排序"""A[m:] = Bself.quick_sort(A, 0, m+n-1)def quick_sort(self, A, first, last):# 初始化p, q指针 指向首、尾元素  if first >= last:returnp = firstq = lastwhile q > p:if A[q] >= A[first]:q -= 1elif A[p] < A[first]:p += 1else:A[p], A[q] = A[q], A[p]A[p] = A[first]# 对分割左侧的元素排序self.quick_sort(A, first, q-1)self.quick_sort(A, q+1, last)# 题解二
class Solution:def merge(self, A: List[int], m: int, B: List[int], n: int) -> None:"""Do not return anything, modify A in-place instead.解题思路: 逆向双指针(比较不好理解),下面代码有详细注释"""# 如果m==0 则直接返回Bif m == 0:A[m:] = Bwhile m > 0 and n > 0:# 当B数组元素大时 把当前元素之间放置A数组后面if B[n-1] > A[m-1]:A[m+n-1] = B[n-1]n -= 1 # 向前移动一个单位else:# 当A数组元素比较大的时候,把当前元素调到后面 A[m+n-1] = A[m-1]  m -= 1  # 向后移动一个单位# 特殊情况处理 如果A数组元素已经对比结束,退出循环时,B数组中还有未对比的元素,则直接赋值给A元素,以索引进行切割if m == 0: A[:n] = B[:n]

python 合并排序的数组相关推荐

  1. 面试题 10.01. 合并排序的数组

    面试题 10.01. 合并排序的数组 思路:①把B数组放在A数组后面,然后排序.O((n+m)²),太蠢了代码不写 ②copyA数组,然后两个指针判度copyA,和B的值那个小,小的放在A数组中,然后 ...

  2. Leetcode面试题 10.01. 合并排序的数组(C语言)

    Leetcode面试题 10.01. 合并排序的数组(C语言) 题目: 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 ...

  3. 链表节点合并排序:数组和单链表

    每日一贴,今天的内容关键字为链表节点 1 数组合并排序 1.1 合并两个已排序好的数组 需要额定的存储空间用来存储合并结果 //merge two array which are already so ...

  4. python合并排序数组

    问题描述 合并两个升序的整数列表a和b,形成一个新的列表,新列表也要有序. 问题示例 输入 a = [1,2,3,4] b = [2,4,5,6],输出 [1, 2, 2, 3, 4, 4, 5, 6 ...

  5. Leetcode 面试题 10.01. 合并排序的数组 (每日一题 20210616)

    给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 A 和 B 的元素数量分别为 m 和 n.示例:输入: A = [1,2 ...

  6. leetcode面试题 10.01. 合并排序的数组

    直接排序 直接使用Java已有的方法进行排序,这一招-大意了! 这题简单,就是个基本的排序,后面难题,可能这只是一小步,内个时候直接用排序算法比较合适,这个不合适.. class Solution { ...

  7. 程序员面试金典 - 面试题 10.01. 合并排序的数组

    1. 题目 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m 和 n. 示例: 输入: ...

  8. 2022-4-1 Leetcode 面试题10.01合并排序的数组

    第一版,使用库函数 class Solution {public:void merge(vector<int>& A, int m, vector<int>& ...

  9. python【力扣LeetCode算法题库】面试题 10.01-合并排序的数组

    面试题 10.01. 合并排序的数组 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m ...

最新文章

  1. 赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
  2. 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax
  3. [转]int.ToString()输出不同格式的数字字符串
  4. 2018-01-05 通用型的中文编程语言探讨之一: 高考
  5. 用神经网络分类水和乙醇
  6. 在Mac下的前端开发必备工具
  7. nullable field verification in gateway backend
  8. JavaScript数组常用的方法总结
  9. 企业级实战01_ActiveMQ 下载、安装、运行、实战需求
  10. Linux学习笔记-用vc编写Liunx代码(vc只充当编辑器的功能)
  11. 【视频教程】JEECG 入门视频教程
  12. Dallas CTP3 发布通告
  13. MaxEnt: 最大熵模型(Maximum Entropy Models)(一)
  14. [翻译]Scott Mitchell的ASP.NET2.0数据教程中文版索引(Canceled!!)
  15. jsoup 网页抓取简介详解
  16. 2022年自考专业考试(计算机应用)软件工程练习题
  17. Kotlin学习资料
  18. 共享单车信号服务器,共享单车的物联网核心——智能锁
  19. 已解决:注册kaggle人机验证出不来
  20. CORBA的基本内容(上)

热门文章

  1. 112. Leetcode 673. 最长递增子序列的个数 (动态规划-子序列问题)
  2. 机器学习笔记 soft-DTW(论文笔记 A differentiable loss function for time-series)
  3. python 文件处理1:将某一目录下的文件合并
  4. Python应用实战案例-深入浅出Python随机森林预测实战(附源码)
  5. tableau应用实战案例(三)-如何用Tableau制作网络关系图
  6. java 堆栈 对象_在Java中,哪些对象放在堆栈上,哪些放在堆上?
  7. 蓝桥杯评分标准_蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准
  8. 深度学习100例-卷积神经网络(VGG-16)猫狗识别 | 第21天
  9. Python编程基础:第十二节 嵌套循环Nested Loops
  10. 柯南变声器的算法实现原理