首页 > 其他 > 详细

leetcode: Merge Sorted Array

时间:2016-06-16 02:18:54      阅读:190      评论:0      收藏:0      [点我收藏+]

问题描述:

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?andnums2?are?m?and?n?respectively.

原问题链接:https://leetcode.com/problems/merge-sorted-array/

?

问题分析

  这个问题相对比较简单,也比较容易找到思路。对于这两个数组来说,一个数组的实际长度可能远超过它们两个数组里有效元素个数的和。假设数组1里元素个数为m,数组2里元素个数为n,可以从数组1里的m + n -1这个位置开始,从后往前去处理。

  我们取3个变量,分别为i, l, r。其中i表示最终在数组里当前位置所放置元素的索引,l表示数组1中间最后一个元素的位置,r表示数组2中间最后一个元素的位置。每次比较l, r的值,将大的那个放入到i的位置。在详细的实现中还需要考虑如果一个数组遍历完的情况。

  详细的代码实现如下:

?

public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        for(int i = m + n - 1, l = m - 1, r = n - 1; i >= 0; i--) {
            if(l >= 0 && r >= 0) {
                if(nums1[l] < nums2[r]) nums1[i] = nums2[r--];
                else nums1[i] = nums1[l--];    
            } else if(r < 0) return;
            else if(l < 0) nums1[i] = nums2[r--];
        }
    }
}

?

?

leetcode: Merge Sorted Array

原文:http://shmilyaw-hotmail-com.iteye.com/blog/2304346

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!