Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
(归并两个有序数组)
思路:从nums1的最后一个位置m+n(nums1给的空间就是这么大)开始填数。将nums1 的第m个元素与nums2的第n 个元素开始做比较,将大的那个放在第m+n的位置
上,依次类推。
1 class Solution { 2 public void merge(int[] nums1, int m, int[] nums2, int n) { 3 int len = m+n; //从这里开始填数 4 //只要nums1或者nums2里的元素填完了,就差不多OK了 5 while(n!=0&&m!=0){ 6 if (nums1[m-1]>nums2[n-1]) 7 nums1[--len] = nums1[--m]; 8 else 9 nums1[--len] = nums2[--n]; 10 } 11 //然后可能的情况为m为0或者n为0,n为0可以不用管,因为说明nums2的 12 //元素都被填到nums1里去了,而nums1里的元素本来就在nums1里。而 13 //n不为0,则要把nums2剩余的元素都填到nums1里去 14 if (n>0) 15 while(--len>=0) 16 nums1[len] = nums2[--n]; 17 } 18 }