(Java)leetcode-88 Merge Sorted Array

topic

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

Note:

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

Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3

Output: [1,2,2,3,5,6]

Thinking

To implement is inserted into the digital nums2 nums1, if the front to back, then it relates to a mobile element, in order to omit the step of moving may be from the back forward, since the latter is empty num1, overwriting the original digital absent The problem.

Code

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
       	int i = m-1, j = n-1, k = m+n-1;
       	while(i >= 0 && j >=  0){
       		if(nums1[i] >nums2[j]) 
       			nums1[k--] = nums1[i--];
       		else 
       			nums1[k--] = nums2[j--];
       	}
       	//处理nums2剩下的元素
       while(j >= 0) {
       		nums1[k--] = nums2[j--];
       }
    }
}

Present the results

Runtime: 0 ms, faster than 100.00% of Java online submissions for Merge Sorted Array.
Memory Usage: 37.4 MB, less than 42.33% of Java online submissions for Merge Sorted Array.

Published 143 original articles · won praise 45 · views 70000 +

Guess you like

Origin blog.csdn.net/z714405489/article/details/88968011