双指针
package 剑指offer;
public class leetcode88合并有序数组forlearn {
public void merge(int[] nums1, int m, int[] nums2, int n){
//新建一个数租
int[] sorted_list =new int[m+n];
int i=0;
int j=0;
int cur_number=0;
//开始遍历
while(i<m||j<n){
if(i==m){
cur_number=nums2[j];
j++;
}else if(j==n){
cur_number=nums1[i];
i++;
}else if (nums1[i]<=nums2[j]){
cur_number=nums1[i];
i++;
}else {
cur_number=nums2[j];
j++;
}
sorted_list[i+j-1]=cur_number;
}
for (int a=0;a<sorted_list.length;++a){
nums1[a]=sorted_list[a];
}
}
}
这里涉及一个小知识点:
题目要求nums1返回。
但是我们可以看到返回类型是void。
其实我们之前见到的普通的函数传参都是显式传参
nums1(参数)
其实还有种类型是引用传递
即表面没有,但是可以通过地址修改了内存中的值
所以这里不需要return ,也能获取新的nums1