博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找两个增序数组中第K大的数
阅读量:5838 次
发布时间:2019-06-18

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

hot3.png

有两个增序数组,打小长度不一定一样。要求找到两个数组merge在一起以后中,第k大的数。

这个是昨天晚上室友分享的阿里面试题。说是老题,但是还是有些启发的。。记录下:

上代码:

int getMedium(int a_start, int a_end, int b_start, int b_end, int k) {    int x = (a_start + a_end) / 2;        //记录a的中位数索引    int y = (b_start + b_end) / 2;        //记录b的中位数索引    if(a_start > a_end)  // a中元素全排除,返回b的第k大       	return b[b_start+k-1];    if(b_start > b_end)  // b中元素全排除,返回a的第k大       	return a[a_start+k-1];    if(a[x] <= b[y])    {        if(k <= (x-a_start) + (y-b_start) + 1) // 砍掉b的右边             return getMedium(a_start, a_end, b_start, y-1, k);        else  // 砍掉a的左边             return getMedium(x+1, a_end, b_start, b_end, k-(x-a_start)-1);                }    else    {        if(k <= (x-a_start) + (y-b_start) + 1)  // 砍掉a的右边             return getMedium(a_start, x-1, b_start, b_end, k);        else  // 砍掉b的左边             return getMedium(a_start, a_end, y+1, b_end, k-(y-b_start)-1);    }    return 0;}

转载于:https://my.oschina.net/dapengking/blog/167334

你可能感兴趣的文章
“长安蔚来”落户南京:李斌任董事长 杨放任CEO
查看>>
蒙古族传统圣火祭祀点燃新年祈福之旅
查看>>
在湘留学生舞龙欢度中国农历小年:中国是第二个家
查看>>
新疆、内蒙、青海三省区骆驼齐聚柴达木上演“激情与速度”
查看>>
“咫尺之境——成都武侯祠馆藏扇面精品展”在成都开展
查看>>
python面试几大重点,BAT公司都很重视!
查看>>
第二届亚太应用经济学会博硕士论文研讨会长沙落幕
查看>>
中信也做云——传统行业的数字化转型是这么玩的
查看>>
刘强东“不给快递员发社会保险和福利的公司都是毒瘤”
查看>>
阿里巴巴达摩院又一技术大牛获选ACM杰出科学家
查看>>
RocketMQ源码解析:Message拉取&消费(下)
查看>>
【重磅】Spring Boot 2.1.0 权威发布
查看>>
Microsoft 面试题 | 我能赢
查看>>
saiku+kettle整合(十六)合计
查看>>
vue-cli 3.0 下发布一个 TypeScript 组件
查看>>
从赋值看基本类型和引用类型的区别
查看>>
使用js开发数据库
查看>>
数据结构和算法javascript描述-字典(第7章)
查看>>
推荐一些造福独立开发者的第三方技术
查看>>
翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>