【力扣算法】88-合并两个有序数组

    xiaoxiao2025-02-11  19

    题目

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

    说明:

    初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 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 ms, 在Merge Sorted Array的Java提交中击败了99.06% 的用户

    内存消耗 : 35.6 MB, 在Merge Sorted Array的Java提交中击败了86.16% 的用户

    class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { if(m==0) {System.arraycopy(nums2,0,nums1,0,n); return;} if(n==0) return; int p1=0; int p2=0; int[] nums1backup = new int[m]; System.arraycopy(nums1,0,nums1backup,0,m); for(int i=0;i<m+n;i++){ if(nums1backup[p1]>nums2[p2]){ nums1[i]=nums2[p2]; p2++; if(p2>=nums2.length){ i++; while(p1<nums1backup.length){ nums1[i]=nums1backup[p1]; i++; p1++; } break; } } else{ nums1[i]=nums1backup[p1]; p1++; if(p1>=nums1backup.length){ i++; while(p2<nums2.length){ nums1[i]=nums2[p2]; i++; p2++; } } } } } }
    最新回复(0)