leetcode 88. 合并两个有序数组
分析:两个数组都有序。把nums2合并到nums1中去,不额外新建数组。
思路:两个数组,所以一个数组放一个指针。由于数组都有序,所以指针的开始位置可以选择都从头或尾开始。由于需要把nums2合并到nums1中去,指针从头部开始遍历容易造成nums1原本数据被覆盖掉,所以选择两个指针都从数组的尾部开始。
然后开始对两个数组的值进行比较。
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i=m-1,j=n-1,index=m+n-1;
while(i>=0 && j>=0){
if(nums1[i]<&#61;nums2[j]){
nums1[index--]&#61;nums2[j--];
}else{
nums1[index--]&#61;nums1[i--];
}
}
if(j>&#61;0){
while(j>&#61;0 & index>&#61;0) nums1[index--]&#61;nums2[j--];
}
}
}