题目:
Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
题意:
给定两个排序整数数组A和B,将B合并为一个排序数组A。
注意:
您可以假设A有足够的空间容纳来自B的其他元素。在A和B中初始化的元素数量分别为m和n。
解题思路:
呃呃呃,这里可以直接把B先放入A中,然后调用sort函数就行。。
Java代码:
public void merge(int A[], int m, int B[], int n) {
if(m < 0 || A == null) {
return;
}
for(int i = 0; i < n; i++) {
A[m+i] = B[i];
}
Arrays.sort(A);
}
第一个有点水,那就看下第二种解法
当A,B不为空
从A,B尾巴开始,比较两个数的大小,大的放后面,同时放后面的那个数组index不断前移就行。
当A为空
就直接添加就行
Java代码:
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1, j = n - 1, index = m + n - 1;
while (i >= 0 && j >= 0)
nums1[index--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];
while (j >= 0)
nums1[index--] = nums2[j--];
}