题目链接
题目描述
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
- 初始化
nums1和nums2的元素数量分别为 m 和 n 。 - 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
解题思路
1. 从后向前原地合并
本题保证了 nums1 有足够的空间来保存 nums2 中的元素,所以可以直接原地合并。
class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int tail = m + n - 1;int t1 = m - 1;int t2 = n - 1;while (t1 >= 0 && t2 >= 0) {if (nums1[t1] > nums2[t2]) {nums1[tail--] = nums1[t1--];} else {nums1[tail--] = nums2[t2--];}}while (t2 >= 0) {nums1[tail--] = nums2[t2--];}}}
- 时间复杂度:
- 空间复杂度:
