LeetCode 之 Merge Sorted Array

原创 2013年11月09日 23:45:52

原题:

Given two sorted integer arrays A and B, merge B into A as one sorted array.

合并两个有序的数列前面有一个是链表形式,而这个数组形式的非常相似,只是需要复制罢了。。。。

主要思想:

1 因为需要合并两个数组到A中,因此数组A会增加,从尾部直接考虑可以减少来回移动的时间

2 用一个指针指向新的数组的尾部,分别比较两个现有数组的尾部,大的放进来就ok

3 两个原数组分别用一个指针指向尾部,用于比较,若哪个指针(位置)为负数,说明该数组比较完毕,稍微处理就ok

如图所示:

                     

图  说明

代码如下:

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        
        //新数组的最后一个位置
        int last = m+n-1;
        //A的最后一个位置
        int indexA = m-1;
        //B的最后一个位置
        int indexB = n-1;
        
        for (int i = 0;i<m+n;i++){
            last = m+n-i-1;
            //两个index都为非负数,说明两个数组都没比较完,将大的放入新数组中
            if(indexA >=0 && indexB >= 0){
                if(A[indexA] > B[indexB]){
                    A[last] = A[indexA];
                    indexA--;
                }
                else{
                    A[last] = B[indexB];
                    indexB--;
                }
            }
            //A数组已经比较完,将B数组剩下的都放进新数组
            else if(indexA < 0){
                A[last] = B[indexB];
                indexB--;
                
            }
            //B数组比较完,直接break,节省时间
            else {
                break;
            }
        }
    }
};



相关文章推荐

(数组)leetcode 88:Merge Sorted Array

(数组)leetcode 88:Merge Sorted Array

LeetCode 88. Merge Sorted Array 归并的过程

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. 题意:对于...

[LeetCode]--88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: Y...

[leetcode]88. Merge Sorted Array (java)

题目描述: Merge two sorted linked lists and return it as a new list. The new list should be made by sp...

Leetcode 88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: Y...

LeetCode 88 — Merge Sorted Array(C++ Java Python)

题目:http://oj.leetcode.com/problems/merge-sorted-array/ Given two sorted integer arrays A and B, mer...

leetcode88---Merge Sorted Array(合并有序数组)

问题描述:Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Not...
  • will130
  • will130
  • 2016年01月14日 18:03
  • 217

leetcode笔记:Merge Sorted Array

Merge Sorted Array这道题没有很复杂的算法,只是一个技巧问题。如果单纯得考虑从小到大地将两个数组进行合并的话,每次在num1中插入一个数的话,需要将后面的元素都向后移动一位,这样,整个...

[LeetCode]88.Merge Sorted Array

【题目】 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may a...

LeetCode | Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assum...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode 之 Merge Sorted Array
举报原因:
原因补充:

(最多只允许输入30个字)