Dare2Solve
We need to merge two sorted arrays nums1
and nums2
into nums1
and keep it sorted.
nums2
into nums1
starting from index m
.nums1
using appropriate sorting functions.m
is the number of elements in nums1
, and n
is the number of elements in nums2
.int compare(const void* a, const void* b);
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
for (int i = m, j = 0; j < n; ++i, ++j) {
nums1[i] = nums2[j];
}
qsort(nums1, nums1Size, sizeof(int), compare);
}
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for (int i = m, j = 0; j < n; ++i, ++j) {
nums1[i] = nums2[j];
}
sort(nums1.begin(), nums1.begin() + m + n);
}
};
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
for i in range(m, m + n):
nums1[i] = nums2[i - m]
nums1[:m + n] = sorted(nums1[:m + n])
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = m, j = 0; j < n; ++i, ++j) {
nums1[i] = nums2[j];
}
Arrays.sort(nums1, 0, m + n);
}
}
/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
var merge = function (nums1, m, nums2, n) {
for (var i = m, j = 0; j < n; i++, j++) {
nums1[i] = nums2[j];
}
nums1.sort((a, b) => a - b);
};
/**
Do not return anything, modify nums1 in-place instead.
*/
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
for (let i = m, j = 0; j < n; i++, j++) {
nums1[i] = nums2[j];
}
nums1.sort((a, b) => a - b);
}
func merge(nums1 []int, m int, nums2 []int, n int) {
for i, j := m, 0; j < n; i, j = i+1, j+1 {
nums1[i] = nums2[j]
}
sort.Ints(nums1[:m+n])
}
public class Solution {
public void Merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = m, j = 0; j < n; ++i, ++j) {
nums1[i] = nums2[j];
}
Array.Sort(nums1, 0, m + n);
}
}