Merge Sorted Array

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

問題描述:給兩個有序的整型數組A和B,A數組長度爲m,B數組長度爲n,前提假設A有足夠大的空間去容納B。

解決思路:分別給A和B兩個指針i和j,當前指向A數組的指針指向的數值大於當前指向B數組的指針的情況下,讓A整個數組往後移,將B指針指向的數值插入A中,然後指針往後移,由於插入一個數值去A數組中,要想數組下標依然指向之前得那個數值,必須也使i++;相反,就只讓A數組指針往後移。還有一種情況必須考慮,如果A數組指針比B數組指針走得快些的話,就讓B數組後面的值直接添加到A數組後面,否則就不做任何處理。

public 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 i = 0, j = 0, k,count;
        while(j < n && i < m){
            if(A[i] >= B[j]){
                m++;
                for(k = m-1; k > i; k--){
                    A[k] = A[k-1];
                }
                A[i] = B[j];
                i++;
                j++;
            }
            else{
                i++;
            }
            
        }
        if(j < n){
            while(j<n){
             A[i] = B[j];
             i++;
             j++;
            }
        }
    }
}
其實這個題目跟之前的Merge Two Sorted Lists有相通之處,不同的是,找到位置之後,如何進行插入,數組是線性表,易於讀取操作,但是不易於插入刪除,但是鏈表是非線性結構,不易於讀取,但是易於插入刪除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章