给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
在此大家可以先思考1分钟
再看题解效果会更好哈
方法1
先合并两数组再排序,此时的时间复杂度为O((n+m)log(n+m))。很明显压根没有用到题目中数组有序这一条件。(可参考下面py版本)
方法2
假设l1指针指向数组num1尾部,l2指针指向数组num2尾部,两者比较将大者放在num1尾部。时间复杂度为0(n+m).小伙伴可以思考下为什么是从后面开始比较,不是从前面开始比较呢?
题目虽简单,细品出真理!一定掌握哈!
1 c++版本
2 python版本
3 java版本