合并两个有序数组-双指针

30 阅读1分钟
// 合并两个有序数组-双指针  
// 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3  
// 输出:[1,2,2,3,5,6]  
// 解释:需要合并 [1,2,3] 和 [2,5,6] 。  
// 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。  
public static void merge(int[] nums1,int m,int[] nums2,int n){  
    int p1=0,p2=0;  
    int[] sorted = new int[m + n];  
    int cur;  
    while (p1<m||p2<n){  
        if(p1==m){  
            cur=nums2[p2++];  
        }else if(p2==n){  
            cur=nums1[p1++];  
        }else if(nums1[p1]<nums2[p2]){  
            cur=nums1[p1++];  
        }else{  
            cur=nums2[p2++];  
        }  
        sorted[p1+p2-1]=cur;  
    }  
    for (int i = 0; i !=m+n ; i++) {  
        nums1[i]=sorted[i];  
    }  
}