Merge Sorted Array

難度:2

解法:

歸併,如果是按照從小到達從左往右插入A數組,勢必要新增一個臨時的數組

換成從大到小從右往左,就可以省掉這部分空間

class Solution
{
public:
    void merge(int A[], int m, int B[], int n)
    {
        int ia=m-1,ib=n-1;
        int k=m+n-1;
        while(ia>=0 || ib>=0)
        {
            if(ia>=0&&ib>=0)
            {
                if(A[ia]>B[ib]) A[k--]=A[ia--];
                else    A[k--]=B[ib--];
            }
            else if(ia>=0)
            {
                A[k--]=A[ia--];
            }
            else
            {
                A[k--]=B[ib--];
            }
        }
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章