[leetcode]88. Merge Sorted Array(Java)

来源:互联网 发布:网络安全教育图片 编辑:程序博客网 时间:2024/06/05 01:53

https://leetcode.com/problems/merge-sorted-array/#/description


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.


package go.jacob.day703;public class Demo2 {/* * 最优解:从后往前处理  * Runtime: 0 ms.Your runtime beats 45.38 % of java submissions. */public void merge(int[] nums1, int m, int[] nums2, int n) {int i = m - 1, j = n - 1, index = m + n - 1;while (i >= 0 && j >= 0)nums1[index--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];while (j >= 0)nums1[index--] = nums2[j--];}/* * Solution by me Runtime: 1 ms.Your runtime beats 5.86 % of java * submissions */public void merge_1(int[] nums1, int m, int[] nums2, int n) {int[] temp = new int[m + n];int i = 0, j = 0, index = 0;while (i < m && j < n) {if (nums1[i] <= nums2[j])temp[index++] = nums1[i++];elsetemp[index++] = nums2[j++];}while (i < m) {temp[index++] = nums1[i++];}while (j < n) {temp[index++] = nums2[j++];}for (int k = 0; k < index; k++) {nums1[k] = temp[k];}}}