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.
Subscribe to see which companies asked this questi
给定两个排序整数数组nums1和nums2,将nums2合并为nums1作为一个排序的数组。
注意: 你可以假设nums1有足够的空间(尺寸大于或等于米 + Ñ)为保持从附加元件nums2。以nums1和nums2初始化的元素数分别为m和n。
要注意的是从数组的末尾进行遍历,而不是在开头进行遍历,这样能保证nums1的数据不会被覆盖,时间复杂度为O(n)
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int k = m + n - 1; int i = m - 1; int j = n - 1; while (k >= 0) { if (i < 0) { nums1[k--] = nums2[j--]; continue; } if (j < 0) { break; } if (nums1[i] > nums2[j]) { nums1[k--] = nums1[i--]; } else { nums1[k--] = nums2[j--]; } } } }欢迎加入中科院开源软件自习室:631696396