JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

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]

Code

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int end = m + n - 1;

        while(m - 1 >= 0 || n - 1 >= 0){
            int x = m - 1 >= 0 ? nums1[m - 1] : Integer.MIN_VALUE;
            int y = n - 1 >= 0 ? nums2[n - 1] : Integer.MIN_VALUE;

            if(x > y){
                nums1[end--] = x;
                m--;
            } else {
                nums1[end--] = y;
                n--;
            }
        }
    }
}