zoukankan      html  css  js  c++  java
  • LeetCode: Median of Two Sorted Arrays

    这题难度在编程,看了网上答案

     1 class Solution {
     2 public:
     3     int dfs(int A[], int m, int B[], int n, int k)  
     4     { 
     5         if (m <= 0) return B[k-1];  
     6         if (n <= 0) return A[k-1];  
     7         if (k <= 1) return min(A[0], B[0]);   
     8         if (B[n/2] >= A[m/2]  && (m/2+n/2+1 >= k)) return dfs(A, m, B, n/2, k);
     9         if (B[n/2] >= A[m/2]  && (m/2+n/2+1 < k)) return dfs(A+m/2+1, m-m/2-1, B, n, k-(m/2+1));
    10         if (B[n/2] < A[m/2]  && (m/2+n/2+1 >= k)) return dfs(A, m/2, B, n, k);
    11         if (B[n/2] < A[m/2]  && (m/2+n/2+1 < k)) return dfs(A, m, B+n/2+1, n-n/2-1, k-(n/2+1));
    12     }
    13     double findMedianSortedArrays(int A[], int m, int B[], int n) {
    14         // Start typing your C/C++ solution below
    15         // DO NOT write int main() function
    16         if((n+m)%2)  return dfs(A,m,B,n, (m+n)/2+1);   
    17         else return (dfs(A, m, B, n, (m+n)/2) + dfs(A, m, B, n, (m+n)/2+1))/2.0;
    18     }
    19 };

    再贴段比较容易懂的代码

     1 class Solution {
     2 public:
     3     double dfs(int A[], int m, int B[], int n, int k) {
     4         if (!m) return B[k-1];
     5         if (!n) return A[k-1];
     6         int *p, *q;
     7         if (A[m/2] <= B[n/2]) p = A, q = B;
     8         else {
     9             p = B, q = A;
    10             swap(m, n);
    11         }
    12         if (k <= m/2+n/2+1) return dfs(p, m, q, n/2, k);
    13         else return dfs(p+m/2+1, m-m/2-1, q, n, k-m/2-1);
    14     }
    15     double findMedianSortedArrays(int A[], int m, int B[], int n) {
    16         // Start typing your C/C++ solution below
    17         // DO NOT write int main() function
    18         int k = m + n;
    19         if (k % 2) return dfs(A, m, B, n, k/2+1);
    20         else return (dfs(A, m, B, n, k/2+1)+dfs(A, m, B, n, k/2))/2;
    21     }
    22 };
  • 相关阅读:
    Guns项目整体结构
    基于事件的NIO多线程服务器
    Reactor模式和NIO
    ConcurrentHashMap之实现细节
    C 语言的前世今生
    Netty系列之Netty高性能之道
    java synchronized详解
    生产者/消费者模式
    当spring 容器初始化完成后执行某个方法
    Linux系统管理员需要知道的16个服务器监控命令
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3010112.html
Copyright © 2011-2022 走看看