[Leetcode]88. Merge Sorted Array

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 }

 

posted @ 2017-10-25 22:09  SkyMelody  阅读(93)  评论(0编辑  收藏  举报