Leetcode 88. 合并两个有序数组

时间:2023-01-16 04:13:00

给定两个有序整数数组 nums1 nums2,将 nums2 合并到 nums1 使得 num1 成为一个有序数组。

说明:

  • 初始化 nums1nums2 的元素数量分别为 mn
  • 你可以假设 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里面
Leetcode 88. 合并两个有序数组Leetcode 88. 合并两个有序数组
 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     }
View Code