力扣 88. 合并两个有序数组

目录

  • 1.解题思路
  • 2.代码实现

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];

}



}

结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!

你可能感兴趣的:(leetcode,算法,数据结构)