Leetcode: Median of Two Sorted Arrays

There are two sorted arrays A and B 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)).

 

 

2017/2/5更新:如果一定要每次扔一半,使得时间复杂度为O(log(m+n))。可以在第一个数组找前k1个,第二个数组找前k2个,使得k1+k2 == k, 分情况:

1. if A[k1] < B[k2], then A[k1]及之前的、B[k2+1]及之后的都不可能成为第k个元素,所以扔掉

2. else if A[k1] > B[k2], then A[k1+1]及之后的、 B[k2]及之前的都不可能成为第k个元素。扔掉 

if (aMid < bMid) Keep [aRight + bLeft]    
else Keep [bRight + aLeft]
 1 public class Solution {
 2     public double findMedianSortedArrays(int A[], int B[]) {
 3         if((A.length+B.length)%2==1)
 4             return helper(A,B,0,A.length-1,0,B.length-1,(A.length+B.length)/2+1);
 5         else
 6             return (helper(A,B,0,A.length-1,0,B.length-1,(A.length+B.length)/2)  
 7                    +helper(A,B,0,A.length-1,0,B.length-1,(A.length+B.length)/2+1))/2.0;
 8     }
 9     
10     private int helper(int A[], int B[], int i, int i2, int j, int j2, int k)
11     {
12         int m = i2-i+1;
13         int n = j2-j+1;
14         if(m>n)
15             return helper(B,A,j,j2,i,i2,k);
16         if(m==0)
17             return B[j+k-1]; //这是相对距离,不是相对于0,而是这轮起点j,所以决定了25行27行要减posA或posB
18         if(k==1)
19             return Math.min(A[i],B[j]);
20         int posA = Math.min(k/2,m);
21         int posB = Math.min(k-posA, n);
22 
23         if(A[i+posA-1]<B[j+posB-1])
24             return helper(A,B,i+posA,i2,j,j+posB-1,k-posA);
25         else
26             return helper(A,B,i,i+posA-1,j+posB,j2,k-posB);
27     }
28 }

 

转载于:https://www.cnblogs.com/EdwardLiu/p/3982815.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 3 RESTful Web服务

Spring 3提供了对RESTful Web服务的支持。 在本教程中&#xff0c;我们将向您展示如何在Spring中实现RESTful Web服务 &#xff0c;或者如何将现有的Spring服务公开为RESTful Web服务 。 为了使事情变得更有趣&#xff0c;我们将从上一篇关于Spring GWT Hibernate JPA Infinisp…

Whois查询接口文档

Whois查询接口文档 whois&#xff08;读作“Who is”&#xff0c;非缩写&#xff09;是用来查询域名的IP以及所有者等信息的传输协议。简单说&#xff0c;whois就是一个用来查询域名是否已经被注册&#xff0c;以及注册域名的详细信息的数据库&#xff08;如域名所有人、域名注…

DM达梦导入导出整个用户或某几张表

导出整个用户 dexp username/passwd127.0.0.1:5236 FILED:\dataexp.dmp LOGD:\dataexp_20191126.log 导出某几张表 dexp username/passwd127.0.0.1:5236 FILED:\dataexp.dmp tables(tbname1,tbname2) LOGD:\exp_20191126.log 导入 dimp username/passwd127.0.0.1:5236 FILED:…

DM达梦创建表空间用户

使用DBA用户登录创建 --查询表空间物理路径 select * from v$datafile; --创建表空间 CREATE TABLESPACE tablesplacename DATAFILE D:\dmdbms\data\DAMENG\tablesplacename .dbf SIZE 10240; --创建用户 CREATE USER username IDENTIFIED BY usernameusername DEFAULT T…

ruby和python_Ruby,Python和Java中的Web服务

ruby和python今天&#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此&#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务&#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中…

USB描述符【整理】

USB描述符 USB描述符信息存储在USB设备中&#xff0c;在枚举过程中&#xff0c;USB主机会向USB设备发送GetDescriptor请求&#xff0c;USB设备在收到这个请求之后&#xff0c;会将USB描述符信息返回给USB主机&#xff0c;USB主机分析返回来的数据&#xff0c;判断出该设备是哪一…

io调度maple调度程序_调度Java应用程序中的主体

io调度maple调度程序许多项目需要计划功能&#xff0c;例如我们计划的工作&#xff0c;重复的工作&#xff0c;异步执行等。 我们的首选方法是使用企业作业调度程序&#xff0c;例如OpenSymphony的Quartz。 使用计划任务进行编码时&#xff0c;最棘手的部分之一是执行部分。 这…

java 线程 Thread Runnable 实现样例

1&#xff1a; /** * Thread 实现多线程样例&#xff08;可继承&#xff09; */ public class ThreadImplementsTest implements Runnable{ public String params; public ThreadImplementsTest(String params) { this.paramsparams; } Override p…

什么是垃圾回收?

以下是我们的垃圾收集手册中的一个示例&#xff0c;该手册将在接下来的几周内发布。 同时&#xff0c;花点时间熟悉垃圾收集的基础知识-这将是本书的第一章。 乍一看&#xff0c;垃圾收集应该处理顾名思义的问题-查找并丢弃垃圾。 实际上&#xff0c;它所做的恰恰相反。 垃圾收…

Extjs弹窗-简单文本编辑框-Ext.Msg.show

var datavalue测试202109;//文本传入数据 Ext.Msg.show({ title:标题, msg:说明, width:600, height:500, prompt:true, multiline:200, closable:true, …

Extjs tree树的生成

前端代码&#xff1a;先后顺序引入extjs-base.js 和extjs-all.js function initTree(){ var Tree Ext.tree; tree new Tree.TreePanel({ id : treeid,//自定义treeid el : tree_id,//div标签id split : false, monitorResize :true, …

在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样?

在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样? 原文:在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样? <a href"javascript:alert(this.innerHTML)" mce_href"javascript:alert(this.innerHTML)">标签</a> 上面…

Getter DI是个好主意吗?

有时&#xff0c;您可能会听说通过getter方法完成的依赖项注入&#xff0c;该方法会覆盖子类或伪造测试框架。 它允许类具有一组设置的依赖关系&#xff0c;该依赖关系实际上是经过硬编码的&#xff0c;但是可以根据需要“注入”。 从现在开始&#xff0c; 我已经写过关于所谓…

java数组根据下标插入数据

/** * * param arr1 源数组 * param n 下标 0...n * param value 值 * return */ public static String[] insertArray(String[] arr1,int n, String value){ //复制一个长度1的数组 String[] arr2 Arrays.copyO…

Javascript - 栈 和 单链表

最近在重温数据结构&#xff0c;于是写了一些代码玩玩&#xff0c;都是很初级的&#xff0c;表喷各位。。。。 function Stack() {this.dataStore [];this.top 0; }Stack.prototype {length: function () {return this.top;}, push: function (element) {this.dataStore[thi…

linux在文件或文件夹中查找字符串

命令&#xff1a;grep "字符串“ * -Rn 注&#xff1a;注意命令大小写&#xff0c;在当前文件夹下的所有文件中搜索字符串 命令&#xff1a;grep -rn ‘字符串’ xxx.log 注&#xff1a; 查询出字符串位置,xxx.log 为被搜索的文件 命令&#xff1a;more 1200 xxx.log 注…

sqlite数据库检索

1. 数据库检索&#xff0c; 得到某字段下所有值 1 - (NSArray *)selectWithColumName: (NSString *)columName2 tableName: (NSString *)tableName {3 if ([self openDatabase] YES) {4 5 NSString * selectSQL [NSString string…

处理中断

我只是在观看Heinz Kabutz的VJUG采访 &#xff0c;这启发了我写一篇有关中断的文章。 顺便说一句&#xff0c;我建议您订阅VJUG YouTube频道 -确实非常有用。 Heinz始终是物有所值的&#xff0c;并且很难学到很多东西就很难看他的演讲。 他提出了有关如何处理InterruptedExcep…

word模板插入文本域并调整表格某一个行的列宽度

一、插入文本域 操作步骤&#xff1a;插入&#xff08;菜单&#xff09;->文档部件&#xff08;菜单&#xff09;->域&#xff08;菜单&#xff09;->邮件合并->输入名称->确认 二、调整word表格某个单元格宽度 选中某行&#xff0c;按住ctrl键的同时&#xf…

从拟物到简约 ------谈网站设计风格的变革

哪种设计才是好的设计&#xff1f;其实&#xff0c;每种设计都有其优势也会有其不足。关键在其应用场合&#xff0c;以及是否能够向用户传递有效的价值。武断地决定是否采用某种技术或者不思考其能否取悦用户的设计不是好设计。好的设计不应当局限于某种设计风格&#xff0c;而…