python 合并排序的数组
| 合并排序的数组
给定两个排序后的数组 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 合并排序的数组相关推荐
- 面试题 10.01. 合并排序的数组
面试题 10.01. 合并排序的数组 思路:①把B数组放在A数组后面,然后排序.O((n+m)²),太蠢了代码不写 ②copyA数组,然后两个指针判度copyA,和B的值那个小,小的放在A数组中,然后 ...
- Leetcode面试题 10.01. 合并排序的数组(C语言)
Leetcode面试题 10.01. 合并排序的数组(C语言) 题目: 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 ...
- 链表节点合并排序:数组和单链表
每日一贴,今天的内容关键字为链表节点 1 数组合并排序 1.1 合并两个已排序好的数组 需要额定的存储空间用来存储合并结果 //merge two array which are already so ...
- python合并排序数组
问题描述 合并两个升序的整数列表a和b,形成一个新的列表,新列表也要有序. 问题示例 输入 a = [1,2,3,4] b = [2,4,5,6],输出 [1, 2, 2, 3, 4, 4, 5, 6 ...
- Leetcode 面试题 10.01. 合并排序的数组 (每日一题 20210616)
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 A 和 B 的元素数量分别为 m 和 n.示例:输入: A = [1,2 ...
- leetcode面试题 10.01. 合并排序的数组
直接排序 直接使用Java已有的方法进行排序,这一招-大意了! 这题简单,就是个基本的排序,后面难题,可能这只是一小步,内个时候直接用排序算法比较合适,这个不合适.. class Solution { ...
- 程序员面试金典 - 面试题 10.01. 合并排序的数组
1. 题目 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m 和 n. 示例: 输入: ...
- 2022-4-1 Leetcode 面试题10.01合并排序的数组
第一版,使用库函数 class Solution {public:void merge(vector<int>& A, int m, vector<int>& ...
- python【力扣LeetCode算法题库】面试题 10.01-合并排序的数组
面试题 10.01. 合并排序的数组 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m ...
最新文章
- 赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
- 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax
- [转]int.ToString()输出不同格式的数字字符串
- 2018-01-05 通用型的中文编程语言探讨之一: 高考
- 用神经网络分类水和乙醇
- 在Mac下的前端开发必备工具
- nullable field verification in gateway backend
- JavaScript数组常用的方法总结
- 企业级实战01_ActiveMQ 下载、安装、运行、实战需求
- Linux学习笔记-用vc编写Liunx代码(vc只充当编辑器的功能)
- 【视频教程】JEECG 入门视频教程
- Dallas CTP3 发布通告
- MaxEnt: 最大熵模型(Maximum Entropy Models)(一)
- [翻译]Scott Mitchell的ASP.NET2.0数据教程中文版索引(Canceled!!)
- jsoup 网页抓取简介详解
- 2022年自考专业考试(计算机应用)软件工程练习题
- Kotlin学习资料
- 共享单车信号服务器,共享单车的物联网核心——智能锁
- 已解决:注册kaggle人机验证出不来
- CORBA的基本内容(上)
热门文章
- 112. Leetcode 673. 最长递增子序列的个数 (动态规划-子序列问题)
- 机器学习笔记 soft-DTW(论文笔记 A differentiable loss function for time-series)
- python 文件处理1:将某一目录下的文件合并
- Python应用实战案例-深入浅出Python随机森林预测实战(附源码)
- tableau应用实战案例(三)-如何用Tableau制作网络关系图
- java 堆栈 对象_在Java中,哪些对象放在堆栈上,哪些放在堆上?
- 蓝桥杯评分标准_蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准
- 深度学习100例-卷积神经网络(VGG-16)猫狗识别 | 第21天
- Python编程基础:第十二节 嵌套循环Nested Loops
- 柯南变声器的算法实现原理