设为首页 加入收藏

TOP

Leetcode:merge_sorted_array
2015-07-20 17:30:36 来源: 作者: 【 】 浏览:3
Tags:Leetcode:merge_sorted_array

一、 题目

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

二、 分析

看到题目后感觉很简单,就是比较两个数组中的元素嘛,但是刚开始发现如果合并到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--] ;
    }
};


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ 之 exception 下一篇zoj 2317 Nice Patterns Strike B..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·“我用Java 8”已成 (2025-12-26 11:19:54)
·下载 IntelliJ IDEA (2025-12-26 11:19:52)
·Java是什么?(通俗 (2025-12-26 11:19:49)
·雾里看花:真正意义 (2025-12-26 10:54:36)
·C++——模板(超详细 (2025-12-26 10:54:34)