标签:
题目:
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A = [1, 2, 3, empty, empty] B = [4,5]
合并之后A将变成[1,2,3,4,5]
注意
你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。
解题:
这里给的是两个数组,上题给的是ArrayList格式,比较好处理,重新定义一个长度m+n的数组,太无节操,其他方法一时想不起来
官方解题,方法很技巧,可以倒着排序,这样就很简单了
Java程序:
class Solution { /** * @param A: sorted integer array A which has m elements, * but size of A is m+n * @param B: sorted integer array B which has n elements * @return: void */ public void mergeSortedArray(int[] A, int m, int[] B, int n) { // write your code here int i = m-1; int j = n-1; int k = m+n-1; while (i>=0 && j>=0){ if(A[i]<=B[j]){ A[k] = B[j]; k--; j--; }else{ A[k] = A[i]; k--; i--; } } while(i>=0){ A[k] = A[i]; k--; i--; } while(j>=0){ A[k] = B[j]; k--; j--; } } }
总耗时: 1528 ms
Python程序:
class Solution: """ @param A: sorted integer array A which has m elements, but size of A is m+n @param B: sorted integer array B which has n elements @return: void """ def mergeSortedArray(self, A, m, B, n): # write your code here for i in range(n): A[m+i] = B[i] A.sort() return A
总耗时: 233 ms
lintcode 容易题:Merge Sorted Array II 合并排序数组 II
标签:
原文地址:http://www.cnblogs.com/theskulls/p/4870998.html