博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求两个长度相等的排序数组的上中位数
阅读量:6892 次
发布时间:2019-06-27

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

给两个排序好的整数数组,数组的长度是相同的,找到这两个数组的上中位数,也就是如果数组是偶数的话,输出前一个中位数。

时间复杂度O(logN),空间复杂度O(1)

public class UpMedian{        public static int getUpMedian(int[] arr1,int[] arr2) {        if(arr1==null || arr1.length<=0 || arr2==null || arr2.length<=0) {            System.out.println("Array is valid");            return -1;        }                if(arr1.length!=arr2.length) {            System.out.println("Array length is valid");            return -1;        }                int start1 = 0;        int end1 = arr1.length-1;        int middle1 = 0;        int start2 = 0;        int end2 = arr2.length-1;        int middle2 =0;        //用来区分数组长度为奇偶数        int offset = 0;                while(start1 < end1) {            middle1 = (start1+end1)>>1;            middle2 = (start2+end2)>>1;            offset = ((end1-start1+1)&1)^1;                        if(arr1[middle1] > arr2[middle2]) {                end1=middle1;                start2=middle2+offset;            } else if(arr1[middle1] < arr2[middle2]) {                start1 = middle1 +offset;                end2 = middle2;            } else {                return arr1[middle1];            }        }                return Math.min(arr1[start1], arr2[start2]);    }    public static void main(String[] args) {        int[] a1 = {1,2,5,7};        int[] a2 = {2,3,8,10};        System.out.println(getUpMedian(a1, a2));    }}

这种题重在分析各种情况,

基本原理就是二分查找,但是你要确定你查找最合适的子数组,这样才能达到O(logN)的时间复杂度

 

转载于:https://www.cnblogs.com/loren-Yang/p/7477684.html

你可能感兴趣的文章
新时代前端的自我修养—2017 D2主题分享记录及我的思考
查看>>
java并发编程学习14--CompletableFuture(一)
查看>>
ES6语法之Symbol
查看>>
取周期性字符串中的其中一个
查看>>
d3.js ----面积图表
查看>>
Zepto这样操作元素属性
查看>>
30-seconds-code——Object
查看>>
pyspark底层浅析
查看>>
【设计模式】组合模式之神经网络应用
查看>>
Jenkins系统搭建及常见操作
查看>>
SQL Server 2012自动异地备份
查看>>
Ubuntu 下 SVN 多版本库的搭建
查看>>
CSS选择器
查看>>
一款简单到极致的 React 数据流框架——Refast
查看>>
ribbon的ServerListRefreshInterval
查看>>
Android我还可以相信你多少系列文章二之音视频播放
查看>>
Adaptive Execution让Spark SQL更高效更好用
查看>>
快手服务治理平台KESS的设计理念和实战
查看>>
微软发布Azure Cosmos DB产品以及新的物联网解决方案
查看>>
与Bob McWhirter的问答:WildFly Swarm更名为Thorntail项目
查看>>