LeetCode-88:Merge Sorted Array (合并两排序数组)

来源:互联网 发布:中心机房云计算 编辑:程序博客网 时间:2024/05/29 16:30

Question

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

问题解析:

合并两个排序好的数组,重新合并成一个排序好的数组。

Answer

Solution 1:

合并实现。

  • 注意题目中给定的条件,nums1数组要大于nums2的数组,将nums2的元素放到nums1中;
  • 绘图可知,nums1后部空缺,故从后向前依次比较,结果存入nums1的后部。
class Solution {    public void merge(int[] nums1, int m, int[] nums2, int n) {        int i = m -1;        int j = n -1;        int 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--];        }    }}
  • Runtime: 0 ms
  • Beats 30.75 % % of java submissions
  • 时间复杂度:O(n);空间复杂度:O(1)
阅读全文
0 0
原创粉丝点击