讨论/《初级算法》 - 合并两个有序数组/
《初级算法》 - 合并两个有序数组
public void merge(int[] nums1, int m, int[] nums2, int n) {
      //逆指针
      int p1=m-1,p2=n-1;
      int tail=m+n-1;
      int[] cur=new int[m+n];
      while(p1>=0||p2>=0){
          if(p1==-1){
              cur[tail]=nums2[p2--];
          }else if(p2==-1){
              cur[tail]=nums1[p1--];
          }else if(nums1[p1]<nums2[p2]){
             cur[tail]=nums2[p2--];
          }else{
               cur[tail]=nums1[p1--];
          }
          tail--;
      }
      for(int i=0;i<m+n;i++){
          nums1[i]=cur[i];
      }
 
    }
展开全部 26 讨论