码迷,mamicode.com
首页 > 编程语言 > 详细

lintcode 容易题:Merge Sorted Array II 合并排序数组 II

时间:2015-10-12 12:02:39      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:

题目:

合并排序数组 II

合并两个排序的整数数组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--;
        }
    }
    
}
View Code

总耗时: 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 
View Code

总耗时: 233 ms

 

lintcode 容易题:Merge Sorted Array II 合并排序数组 II

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4870998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!