p18 合并2个有序数组 (leetcode 88)

一:解题思路

这个题目的解法利用双指针来进行解答。

二:完整代码示例 (C++版和Java版)

C++版:

 class Solution 
 {
 public:
     void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
     {
         int i = m - 1, j = n - 1, k = m + n - 1;

         while ((i >= 0) && (j >= 0))
         {
             if (nums1[i] > nums2[j])
             {
                 nums1[k--] = nums1[i--];
             }
             else
             {
                 nums1[k--] = nums2[j--];
             }
         }

         while (j >= 0) nums1[k--] = nums2[j--];
     }
 };

Java版:

class Solution 
{
    public void merge(int[] nums1, int m, int[] nums2, int n) 
    {
          int i=m-1,j=n-1,k=m+n-1;
          
          while((i>=0)&&(j>=0))
          {
              if(nums1[i]>nums2[j])
              {
                  nums1[k--]=nums1[i--];
              }
              else
              {
                  nums1[k--]=nums2[j--];
              }
          }
          
          while(j>=0) nums1[k--]=nums2[j--];
    }
}

 

posted @ 2020-03-11 15:57  repinkply  阅读(148)  评论(0)    收藏  举报