zoukankan      html  css  js  c++  java
  • 【leetCode】4. Median of Two Sorted Arrays

    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)).

    Example 1:

    nums1 = [1, 3]
    nums2 = [2]
    
    The median is 2.0
    

    Example 2:

    nums1 = [1, 2]
    nums2 = [3, 4]
    
    The median is (2 + 3)/2 = 2.5

     1 class Solution {
     2     public double findMedianSortedArrays(int[] nums1, int[] nums2) {
     3         int n1 = nums1.length;
     4         int n2 = nums2.length;
     5         if ((n1 + n2) % 2 == 1) {
     6             return findNumK(nums1, n1, nums2, n2, (n1 + n2) / 2 + 1);
     7         } else {
     8             return (findNumK(nums1, n1, nums2, n2, (n1 + n2) / 2) + findNumK(nums1, n1, nums2, n2, (n1 + n2) / 2 + 1))
     9                     / 2;
    10         }
    11     }
    12 
    13     public double findNumK(int[] nums1, int n1, int[] nums2, int n2, int k) {
    14         if (n1 > n2) {
    15             return findNumK(nums2, n2, nums1, n1, k);
    16         }
    17         if (n1 == 0) {
    18             return nums2[k - 1];
    19         }
    20         if (k == 1) {
    21             return Math.min(nums1[0], nums2[0]);
    22         }
    23         int temp1 = Math.min(k / 2, n1);
    24         int temp2 = k - temp1;
    25         if (nums1[temp1 - 1] < nums2[temp2 - 1]) {
    26             return findNumK(subArray(nums1, temp1), n1 - temp1, nums2, n2, k - temp1);
    27         } else if (nums1[temp1 - 1] > nums2[temp2 - 1]) {
    28             return findNumK(nums1, n1, subArray(nums2, temp2), n2 - temp2, k - temp2);
    29         } else {
    30             return nums1[temp1 - 1];
    31         }
    32     }
    33 
    34     public int[] subArray(int[] a, int b) {
    35         int[] temp = new int[a.length - b];
    36         for (int i = 0; i < a.length - b; i++) {
    37             temp[i] = a[b + i];
    38         }
    39         return temp;
    40     }
    41 }
  • 相关阅读:
    全面解析Vue.nextTick实现原理
    js 宏任务和微任务
    模拟实现ES6的set类
    git客户端出现libpng warning: iCCP: known incorrect sRGB profile
    js封装、继承
    js单例模式
    并行运行多个python虚拟机
    关于场景服务的一些想法
    关于不能对闭包函数进行热更新的问题
    Python string interning原理
  • 原文地址:https://www.cnblogs.com/carsonwuu/p/7529264.html
Copyright © 2011-2022 走看看