链接
题目:
注意数组默认已经是升序。
使用双指针p1 p2遍历两个数组;
过程和合并两个排序的链表类似
当p1 p2还未遍历到头,则从前向后判断p1 p2指针所指的元素,小的就放入r 数组;
当有任一数组到头了,则跳出循环,将未到头的那个数组继续添加至r 数组即可;
最后拷贝至nums1。
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] r=new int[nums1.length];
int p1=0;
int p2=0;
int curr=0;
while(p1
if(nums1[p1]
r[curr++]=nums1[p1++];
}else{
r[curr++]=nums2[p2++];
}
}
//任一数组到头了
while(p1
r[curr++]=nums1[p1++];
}
while(p2
r[curr++]=nums2[p2++];
}
System.arraycopy(r,0,nums1,0,n+m);
}
}
方法二:Arrays.sort
先将nums2直接添加进nums1,然后使用Java自带API进行排序
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for(int i=0;i
nums1[m+i]=nums2[i];
}
Arrays.sort(nums1);
}
}



