码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode题目----求中位数---标签:Array

时间:2018-04-15 18:08:29      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:link   http   style   arrays   要求   turn   []   ==   line   

题目难度---困难

题目要求:

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。

请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。

思路:第一眼看到题目两个数组求中位数,看似很复杂,但是仔细一想,两个数组合在一块不久行了?然后合并后的数组给他排序,进而判断是奇数位数组还是偶数位数组

ok!代码奉上:

 

public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int[] result = new int[nums1.length + nums2.length];// 首先初始化合并数组的大小
        List list = new LinkedList();// 建立新数组,目的是list集合插入方便
        if (result.length == 0) {// 判断数组是否为空
            return 0;
        }
        // 将两个数组中的值放入list集合中
        for (int i : nums1) {
            list.add(i);
        }

        for (int j : nums2) {
            list.add(j);
        }
        // 这部很关键--因为后面遍历整个数组排序数组会因为这部操作而大大简化
        for (int i = 0; i < list.size(); i++) {
            result[i] = (Integer) list.get(i);// 很简单的将list集合的元素一个个遍历到result数组中
        }
        // 下面就是新数组及合并后的数组排序
        for (int i = 0; i < result.length; i++) {

            for (int j = i + 1; j < result.length; j++) {

                if (result[i] >= result[j]) {
                    int temp = result[i];
                    result[i] = result[j];
                    result[j] = temp;
                }
            }
        }
        // -----------------这个地方就是判断数组的元素是奇数偶数,奇数取最中间的数就可以了,偶数就中间俩位取平均了
        double answer = 0;
        if (result.length % 2 == 1) {
            int q = result.length / 2;
            answer = result[q];
        } else {
            int p = result.length / 2;
            for (int i = 0; i < result.length; i++) {
                if (p - 1 == i) {
                    answer = result[i];
                    break;
                }
            }
            answer = (answer + result[p]) / 2;
        }
        // 上边注意的地方:数组元素计算奇数偶数后取值时应注意遍历是从0开始,因此result.length/2的值要比遍历变量大1
        return answer;
    }

 

技术分享图片

 

emmmm第一篇自己写的博客,有问题请留言……^-^

 

LeetCode题目----求中位数---标签:Array

标签:link   http   style   arrays   要求   turn   []   ==   line   

原文地址:https://www.cnblogs.com/wangsr-suc/p/8848363.html

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