求两个有序数组A和B的第k大的数——Java
来源:互联网 发布:上海浦东软件协会朱 编辑:程序博客网 时间:2024/05/16 17:52
package com.bupt;public class Solution6 {public static int Search(int[] a,int startA,int endA,int[] b,int startB,int endB,int k){if(k ==1){if(a[startA]>b[startB]){return b[startB];}else{return a[startA];}}if(startA>endA){return b[startB+k-1];}if(startB>endB){return a[startA+k-1];}int countA = 0;//分别取A,B数组中元素的个数int countB = 0;if(a.length<b.length){//查看k/2是否大于数组A或B的长度,并进行相应的处理if(endA-startA+1>k/2){countA = k/2;}else{countA = endA-startA+1;}countB = k-countA;}else{if(endB-startB+1>k/2){countB = k/2;}else{countB = endB-startB+1;}countA = k-countB;}int indexA = startA+countA-1;//A和B的比较点int indexB = startB+countB-1;if(a[indexA] == b[indexB]){return a[indexA];}else{if(a[indexA]>b[indexB]){//根据比较的结果进行相应递归return Search(a,startA,indexA,b,indexB+1,endB,k-countB);}else{return Search(a,indexA+1,endA,b,startB,indexB,k-countA);}}} public static void main(String[] args){ int[] a = new int[]{1,9,10,18}; int[] b = new int[]{7,10}; int k = 6; System.out.println(Search(a,0,a.length-1,b,0,b.length-1,k)); } }
0 0
- 求两个有序数组A和B的第k大的数——Java
- 二分求两个有序数组第k大的数
- 复杂度为log(m+n)下求有序数组A和B有序合并之后第k小的数
- 两个有序数组中,寻找第K大的数
- 两个有序数组找第k大的数
- 求两个有序整型数组元素和的第K大值
- 求两个数组中第k大的数
- 两个有序数组,A[k]和B[k]长度都为k。求前k个最小的(a[i]+b[j])
- 给定两个长度相同,分别有序的数组A和B,求两个数组中所有数的中位数
- 求两个有序数组的中位数(扩展求第k大元素)
- 有序数组a,b,找出a,b(合并为一个大的有序数组后)中第k个数
- 求数组第K大的数
- 如何求两个有序数组的第K个数
- 如何求两个有序数组的第K个数
- 求两个有序数组的第k小元素
- Median of Two Sorted Arrays 有序数组A和B合并之后第k小的数
- 寻找两个有序数组的第k小的数
- 两个有序数组寻找合并之后第k大的数
- 测试文章
- redis实现分布式锁
- SynaptiCAD.Product.Suite.v14.19c
- QT-QML调用IOS原生通讯录
- 第二十四讲项目一分段函数求值
- 求两个有序数组A和B的第k大的数——Java
- Mysql避免重复插入记录
- Kirill the Gardener 3 URAL 2072
- 后台得到时间戳到jsp中转换为日期显示
- Windows文件夹管理:删除重建问题
- Flume实战采集文件内容存入HDFS
- springmvc form中 commandName和modelAttribute的疑问
- Eclipse中配置mybatis-3-config.dtd
- SSM分页、多条件查询