码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode【88. 合并两个有序数组】

时间:2019-04-15 13:09:16      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:testcase   class   []   error   下标   put   错误   范围   比较   

首先想到的方法就是,假设一个nums3数组,然后,比较nums1与nums2的数值大小,然后,放在nums3中,再将nums3转移到nums1中。

实现起来很麻烦,1、没有考虑到下标问题,结果就ArrayIndexOutOfBoundsException错误,m,n是元素个数,数组下标是从0开始的。

                             2、过多的if判断,导致我最后修改一个又一个的错误。

 

再从看题目,发现nums1中的范围是m+n,那么又想到,可以先将nums2的数据放在nums1后面,再对nums1进行排序。

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i,j;
        int temp;
        for(i = m;i < n+m;i++)
        {
            nums1[i] = nums2[i-m];
        }
        for(i=0;i < m+n;i++)
        {
            for(j=0;j<m+n;j++)
            {
                if(nums1[i]<nums1[j])
                {
                    temp = nums1[i];
                    nums1[i] = nums1[j];
                    nums1[j] = temp;
                }
            }
        }
    }
}

其实,在中间排序阶段应该可以优化,我这应该算暴力枚举,两个for都是从0到m+n,不够合算,因为,原先两个数组其实都已经是有序的了。

LeetCode【88. 合并两个有序数组】

标签:testcase   class   []   error   下标   put   错误   范围   比较   

原文地址:https://www.cnblogs.com/wzwi/p/10710041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!