zoukankan      html  css  js  c++  java
  • 88. Merge Sorted Array

    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]

    用two pointers

    因为要in-place给nums1赋值,不能从左往右比较。从右往左比较,选出大的,放在nums1的末尾。

    时间:O(N),空间:O(1)

    class Solution {
        public void merge(int[] nums1, int m, int[] nums2, int n) {
            int p1 = m - 1, p2 = n - 1, p = m + n - 1;
            while(p >= 0) {
                while(p1 >= 0 && p2 >= 0) {
                    if(nums1[p1] > nums2[p2])
                        nums1[p--] = nums1[p1--];
                    else
                        nums1[p--] = nums2[p2--];
                }
                while(p1 >= 0)
                    nums1[p--] = nums1[p1--];
                while(p2 >= 0)
                    nums1[p--] = nums2[p2--];
            }
        }
    }
  • 相关阅读:
    第二阶段团队绩效评分
    团队冲刺2.9
    团队冲刺2.8
    团队冲刺2.7
    团队冲刺2.6
    团队冲刺2.5
    项目总结以及事后诸葛亮会议
    做什么都队第二阶段绩效评估
    第二阶段冲刺第十天
    第二阶段冲刺第九天
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10054556.html
Copyright © 2011-2022 走看看