首页 > 其他 > 详细

Leetcode:merge_sorted_array

时间:2017-05-03 10:23:29      阅读:263      评论:0      收藏:0      [点我收藏+]

一、     题目

将给定的两个排好序的数组合并成一个有序数组。

二、     分析

看到题目后感觉非常easy。就是比較两个数组中的元素嘛,可是刚開始发现假设合并到A[]中从前到后的话可能会导致原数据该,如何才干避免这样的错误呢?于是想到了逆向合并,从后往前填入数组。


class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
    
    	int length=m+n-1;
    	m--;
    	n--;
        for(int i=length;i>=0;i--){
        	if (m == -1 || (n != -1 && A[m] <= B[n])) {  
                A[i] = B[n--];  
            }  
            else {  
                A[i] = A[m--];  
            }              
        }
    }
};


class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
    	int length=m+n-1;
	    int i=m-1;
	    int j=n-1;
        while (i >= 0 && j >= 0)
            A[length--] = A[i] > B[j] ? A[i--] : B[j--] ;
        while (i >= 0)
            A[length--] = A[i--] ;
        while (j >= 0)
            A[length--] = B[j--] ;
    }
};


 

Leetcode:merge_sorted_array

原文:http://www.cnblogs.com/jzdwajue/p/6800503.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!