博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Median of two sorted Array
阅读量:6153 次
发布时间:2019-06-21

本文共 1137 字,大约阅读时间需要 3 分钟。

将题目转化为 "Kth element in 2 sorted array" 的问题

 

if(m/2 + n/2) > k && a[m/2] > b[n/2] drop section 2

if(m/2 + n/2) > k && a[m/2] < b[n/2] drop section 4

if(m/2 + n/2) < k && a[m/2] > b[n/2] drop section 3

if(m/2 + n/2) < k && a[m/2] < b[n/2] drop section 1

 

代码:

class Solution {

public:

double findMedianSortedArrays(int A[], int m, int B[], int n) {

    if((m+n) & 1) { // m+n is odd

        return getKth(A, m, B, n, (m+n)/2+1);

    } else {

        return 1.0/2*(getKth(A, m, B, n, (m+n)/2)+ getKth(A, m, B, n, (m+n)/2 + 1) );

    }

}

 

int getKth(int A[], int m, int B[], int n, int k) {

    if(m <= 0) return B[k-1];

    if(n <= 0) return A[k-1];

    if(k <= 1) return min(A[0], B[0]);

 

    if(A[m/2] > B[n/2]) {

        if(m/2 + n/2 + 1 >= k) {

            getKth(A, m/2, B, n, k);

        } else {

            getKth(A, m, B+n/2+1, n-(n/2+1), k-(n/2+1));

        }

    } else {

        if(m/2 + n/2 + 1 >= k) {

            getKth(A, m, B, n/2, k);

        } else {

            getKth(A+m/2+1, m-(m/2+1), B, n, k-(m/2+1));

        }

    }

}

};         

 

总结

1. 第一次真正使用 A[], m 这种描述数组的方法. 的确, 这种方法比 int st, ed 要好, 毕竟少了个参数

2. 第一个判断条件是 a[m/2] > b[n/2]), 第二个判断条件是 (m/2 + n/2 +1). 第二个判断条件比较直观的是 m/2+n/2+2, +1 的话能够更快的收敛, 因为这保证每次至少有 a[m/2] or b[n/2] 会被踢出

转载于:https://www.cnblogs.com/zhouzhuo/p/3674096.html

你可能感兴趣的文章
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>
c#中lock的使用(用于预约超出限额的流程)
查看>>
ODI基于源表时间戳字段获取增量数据
查看>>
并发容器之CopyOnWriteArrayList(转载)
查看>>
什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
查看>>
原创:goldengate从11.2升级到12.1.2
查看>>
Quartz
查看>>
正则表达式的语法规则
查看>>
C#一个关于委托和事件通俗易懂的例子
查看>>
类似于SVN的文档内容差异对比工具winmerge
查看>>
Cause: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
quratz线程
查看>>
execnet: rapid multi-Python deployment
查看>>
windows修改3389端口
查看>>
关于JavaScript词法
查看>>
FreeSwitch中的会议功能(4)
查看>>
MySQL中创建用户分配权限(到指定数据库或者指定数据库表中)
查看>>