1.解题思路
另开辟一个大小为m+n的数组再利用双指针判断两个指针的大小,将小值赋给数组上并给该数组的下标加一和该指针加一,其次,要判断两个数组是否已经被拷贝完,如果其中一个已经到头,那么剩下的空间则全部由另外数组拷贝.然后再将此数组拷贝到原数组上.
2.代码实现
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) { int* nums=(int *)malloc(sizeof(int)*(n+m)); int left=0; int right=0; int data=0; while(data<(m+n)) { if(left==m) { while(right<n) { nums[data++]=nums2[right++]; } break; } if(right==n) { while(left<m) { nums[data++]=nums1[left++]; } break; } if(nums1[left]<=nums2[right]) { nums[data++]=nums1[left++]; } else { nums[data++]=nums2[right++]; } } for(int i=0;i<m+n;i++) { nums1[i]=nums[i]; } }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!