[LeetCode]--88. Merge Sorted Array

原创 2016年10月03日 16:59:02

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.

这个问题假设了nums1这个数组的长度是m+n。我的考虑是,比较之后插入,如果插入就把插入处之后的往后依次挪一个。这个算法通过了。

public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i = 0, j = 0;
        while (i < m && j < n) {
            if (nums2[j] < nums1[i]) {
                //这里是m,不能是m-1,因为插入一个之后变长了一个
                for (int p = m; p > i; p--)
                    nums1[p] = nums1[p - 1];
                nums1[i] = nums2[j];
                j++;
                m++;
            }
            i++;
        }
        while (j < n) {
            nums1[i] = nums2[j];
            i++;
            j++;
        }
    }

如果考虑这个题从后面一个个插入,就更简便了,效率大大提高了,不用后移那么多次了。

class Solution {
    /**
     * @param A: sorted integer array A which has m elements, 
     *           but size of A is m+n
     * @param B: sorted integer array B which has n elements
     * @return: void
     */
    public void mergeSortedArray(int[] A, int m, int[] B, int n) {
        int i = m-1, j = n-1, index = m + n - 1;
        while (i >= 0 && j >= 0) {
            if (A[i] > B[j]) {
                A[index--] = A[i--];
            } else {
                A[index--] = B[j--];
            }
        }
        while (i >= 0) {
            A[index--] = A[i--];
        }
        while (j >= 0) {
            A[index--] = B[j--];
        }
    }
}

差别就是,如果n是很短的,第一种就把nums2数组比较完了就不用管了。如果n是很长的,那么显然第二种方式更可取。

版权声明:本文为博主原创文章,转载请声明出处 http://blog.csdn.net/bug_moving

Leetcode_88_Merge Sorted Array

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41631609 通过本文你可能学到的知识为: (1)当我们...
  • pistolove
  • pistolove
  • 2014年11月30日 23:37
  • 1967

【leetcode】88. Merge Sorted Array(Python & C++)

88. Merge Sorted Array题目链接88.1 题目描述:Given two sorted integer arrays nums1 and nums2, merge nums2 int...
  • liuxiao214
  • liuxiao214
  • 2017年09月05日 21:39
  • 207

Leetcode:88. Merge Sorted Array(JAVA)

【问题描述】 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted ar...
  • u010183658
  • u010183658
  • 2016年03月13日 09:49
  • 985

leetcode 88 Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: Y...
  • wangyaninglm
  • wangyaninglm
  • 2015年06月24日 22:47
  • 2944

leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note...
  • xygy8860
  • xygy8860
  • 2015年07月25日 09:45
  • 1019

LeetCode(88)Merge Sorted Array

题目Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: ...
  • fly_yr
  • fly_yr
  • 2015年08月20日 17:33
  • 1940

leetcode解题之88 #Merge Sorted Array Java版

leetcode解题之88 #Merge Sorted Array Java版
  • mine_song
  • mine_song
  • 2017年03月13日 18:57
  • 134

leetcode-java-88. Merge Sorted Array

/* Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note...
  • github_34514750
  • github_34514750
  • 2016年08月28日 10:10
  • 377

88. Merge Sorted Array [easy] (Python)

题目链接https://leetcode.com/problems/merge-sorted-array/题目原文 Given two sorted integer arrays nums1 an...
  • coder_orz
  • coder_orz
  • 2016年06月15日 13:54
  • 2567

[C语言][LeetCode][88]Merge Sorted Array

题目Merge Sorted Array Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as on...
  • Timsley
  • Timsley
  • 2015年08月20日 08:29
  • 385
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode]--88. Merge Sorted Array
举报原因:
原因补充:

(最多只允许输入30个字)