zoukankan      html  css  js  c++  java
  • leetcode实践:找出两个有序数组的中位数

    • 题目

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
    请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

    • 代码实现
    package com.ddc.learn;
    
    import java.util.Arrays;
    
    /**
     * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
     请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
     */
    public class FindMedianSortedArrays {
    
        /**
         * 先合并再排序,然后奇数取中间值,偶数取中间两个值的平均数...
         * @param nums1
         * @param nums2
         * @return
         */
        public double findMedianSortedArrays(int[] nums1, int[] nums2) {
            int[] merge = new int[nums1.length + nums2.length];
            System.arraycopy(nums1, 0, merge, 0, nums1.length);
            System.arraycopy(nums2,0,merge, nums1.length, nums2.length);
            Arrays.sort(merge);
    
            System.out.println(Arrays.toString(merge));
            if (merge.length % 2 == 1) {
                return merge[merge.length/2];
            } else {
                double p = merge[merge.length/2];
                return (p + merge[merge.length/2 - 1])/2;
            }
        }
    
        public static void main(String[] args) {
            int[] nums1 = {1,2};
            int[] nums2 = {3,4};
    
            double out = new FindMedianSortedArrays().findMedianSortedArrays(nums1, nums2);
            System.out.println(out);
        }
    }
    
  • 相关阅读:
    运算符的优先级
    运算符
    值类型与引用类型的区别
    进制转换
    Java总结第二期
    Java总结第一期
    库存管理系统
    MyBank后感
    day72
    day71
  • 原文地址:https://www.cnblogs.com/gouyg/p/leetcode-FindMedianSortedArrays.html
Copyright © 2011-2022 走看看