LeetCode之旅(27)

来源:互联网 发布:js中给文本框赋值 编辑:程序博客网 时间:2024/06/03 16:49

Merge Sorted Array


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

Note:
You may assume that A has enough space (size that is greater or equal to m +n) to hold additional elements from B. The number of elements initialized in A and B arem and n respectively.


考虑从后往前合并,就不需要考虑数据移动的问题了,开始没想到这一点,看了别人的博客才想到的,挺巧妙

我的:


class Solution {public:    void merge(int A[], int m, int B[], int n) {        if (!n) return;        int l=0, r=0;        while (l<m) {            if (A[l] > B[r]) {                swap(A[l], B[r]);                for (int i=r; i<n-1; i++)                    if (B[i]>B[i+1]) swap(B[i], B[i+1]);                    else break;            } else                l++;        }        for (int i=0; i<n; i++)            A[m+i] = B[i];    }};

别人的:


class Solution {public:    void merge(int A[], int m, int B[], int n) {        int index = m + n - 1;        int aIndex = m - 1;        int bIndex = n - 1;        while (0 <= aIndex && 0 <= bIndex) {            if (B[bIndex] > A[aIndex])                A[index--] = B[bIndex--];            else                A[index--] = A[aIndex--];        }        while (0 <= aIndex)            A[index--] = A[aIndex--];        while(0 <= bIndex)            A[index--] = B[bIndex--];    }};



0 0
原创粉丝点击