定义两个指针分别指向连个数组:进行位置上的比较,不断向后遍历两个数组。
package KTwoPointers;
import java.lang.annotation.Target;
import java.util.Arrays;
/**
* @Author Zhou jian
* @Date 2020 ${month} 2020/5/4 0004 00:27
* 合并两个有序数组
*/
public class Problem88 {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] rs = new int[m+n];
int index = 0;
int index1 = 0;
int index2 = 0;
while (index1<m&&index2<n){
if(nums1[index1]<nums2[index2]){
rs[index]=nums1[index1];
index++;
index1++;
}else{
rs[index]=nums2[index2];
index++;
index2++;
}
}
while(index1<m){
rs[index]=nums1[index1];
index++;
index1++;
}
while(index2<n){
rs[index]=nums2[index2];
index++;
index2++;
}
for(int i=0;i<m+n;i++){
nums1[i]=rs[i];
}
}
public static void main(String[] args) {
int[] nums1 = {1,2,3,0,0,0};
int[] nums2 = {2,5,6};
Problem88 problem88 = new Problem88();
problem88.merge(nums1,3,nums2,3);
System.out.println(Arrays.toString(nums1));
}
}