88. Merge Sorted Array

You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

采用双指针,从结尾开始遍历两个数组。
比较后按倒叙插入第一个数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1 , j = n - 1, k = m + n - 1;

while ( i >= 0 && j >= 0 ) {
if ( nums1[i] < nums2[j] ){
nums1[k] = nums2[j];
j--;
k--;
}
else {
nums1[k] = nums1[i];
i--;
k--;
}
}
if ( i < 0 ){
while ( j >= 0 ){
nums1[k] = nums2[j];
j--;
k--;
}
}
}
}

Author

Xander

Posted on

2022-04-03

Updated on

2022-05-02

Licensed under

Comments