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.