合并两个有序数组 | 刷题打卡

107 阅读1分钟

一.题目描述

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 

示例1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]

示例2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]

提示:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -109 <= nums1[i], nums2[i] <= 109

三.解题思路

由题目中得知,可以用暴力把nums2中的元素复制到nums1中去,然后对nums1进行排序

class Solution {    public void merge(int[] nums1, int m, int[] nums2, int n) {           for(int i=m;i<m+n;i++){               nums1[i]=nums2[i-m];           }           for(int j=0;j<m+n;j++){               for(int k=0;k<m+n;k++){                   if(nums1[j]<nums1[k]){                       int temp=nums1[j];                       nums1[j]=nums1[k];                       nums1[k]=temp;                   }               }           }              }}

四.总结

这道题应该还可以有用双指针的方法来做,奈何本人实力有限,只能到此为止。嗖嗖

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情