给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]
思路:归并排序
用一个指针指向数组1,一个指针指向数组2
如果nums1[i]<nums2[j]
就把数组1的扔到ans里面,反之则把2的扔到ans里面
跑完之后,再把剩下的扔到ans里面
1 void merge(int[] nums1, int m, int[] nums2, int n) { 2 int i=0,j=0; 3 int cou=0; 4 int [] ans =new int [m+n]; 5 while(i<m&&j<n) 6 { 7 if(nums1[i]<nums2[j]) 8 { 9 ans[cou++]=nums1[i]; 10 i++; 11 } 12 else { 13 ans[cou++]=nums2[j]; 14 j++; 15 } 16 } 17 if(i!=m) 18 { 19 while(i<m) 20 ans[cou++]=nums1[i++]; 21 } 22 if(j!=n) 23 { 24 while(j<n) 25 ans[cou++]=nums2[j++]; 26 } 27 28 for(i=0;i<nums1.length;i++) 29 nums1[i]=ans[i]; 30 31 }