zoukankan      html  css  js  c++  java
  • There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

    解题思路:合并两个数组,创建一个 Map对象,用以存放排好顺序的键值对,键为序号,值为数组值,中位数的结果分两种情况讨论:

      1、m+n为奇数:(m+n)/2为中位数

      2、m+n为偶数:(((m+n)/2-1)+(m+n)/2)/2为中位数

    public class FindMedianNum {
      public static void main(String[] args) {
        int[] a = {1,2,3,4,5,10};
        int[] b = {3,5,6,7};
        double median = findMedianNum(a,b);
        System.out.println(median);
      }
      public static double findMedianNum(int[] a, int[] b){
        int m = a.length;
        int n = b.length;
        int i = 0, j =0, k = 0;
        if(m==1 && n == 0){
          return a[0];
        }
        if(m == 0 && n == 1){
          return b[0];
        }
        Map<Integer, Integer> map = new HashMap<Integer,Integer>();
        while(i < m && j < n){
          if(a[i] <= b[j]){
            map.put(k, a[i]);
            ++i;
            ++k;
          }else{
            map.put(k, b[j]);
            ++j;
            ++k;
          }
        }
        while(i < m){
          map.put(k, a[i]);
          ++i;
          ++k;
        }
        while(j < n){
          map.put(k, b[j]);
          ++j;
          ++k;
        }
        if((m+n)%2 == 0){
          return (double)(map.get((m+n)/2-1) + map.get((m+n)/2))/2;
        }else{
          return (double)map.get((m+n)/2);
        }
      }
    }

  • 相关阅读:
    python打包
    tkinter python(图形开发界面)
    Pyinstaller 打包exe文件 取消dos窗口(黑框框)
    PHP知识点(转载https://www.cnblogs.com/mapsxy/p/9977744.html)
    Java去除字符串中的空格
    开心
    原型链—— javascript
    ajax跨域jsonp —— javascript
    ajax异步 —— javascript
    this —— javascript
  • 原文地址:https://www.cnblogs.com/huaiyinxiaojiang/p/6433302.html
Copyright © 2011-2022 走看看