两个已经从小到大排好序的数组A和B,长度分别是m和n,分别从两个数组A,B中拿出一个数a和b,定义s=a+b, 求s的第k小的值。例如:A={1,4,6,8,10} B={1,4,5,7,8}
K=1,return 2(A[0]+B[0])
K=2,return 5(A[0]+B[1])
K=3,return 5(A[1]+B[0])
K=4,return 6(A[0]+B[2])
求解法,最好用java
K=1,return 2(A[0]+B[0])
K=2,return 5(A[0]+B[1])
K=3,return 5(A[1]+B[0])
K=4,return 6(A[0]+B[2])
求解法,最好用java
解决方案 »
- 与大家分享我的第一个开源项目
- 一道简单的java习题?
- 刚开始学JAVA,问一个JAVA的简单问题??
- JAVA 时间相减问题---->高手支招
- 问一下Applet 加载第三方jar包问题? 高手们都进来看下咯
- 初学weblogic
- java里面的两个float加减运算,结果小数点位数增加,非常奇怪!
- 自己编写JAVA代码实现打印功能
- 请问新浪,网易,263上面的给手机发送图片,短信,铃声的Web是用什么做的?
- 我用Java swing坐了一个软键盘,怎么切换系统的输入法
- tomcat使用jspSmartUpload组件,时不时的会发现内存暴涨,经过内存观察工具发现com.jspsmart.upload.file实例
- Java文件在windows编译后的class,放到linux上运行乱码
return B[a.length % k] + A[k-1]
else
return A[b.length % k] + B[k-1]
return Integer.MIN
}
int i = 0
while(true and i < a.length){
if(k > a.length)
return a[k / a.length -1] + b[k % b.length - 1]
}else{
a[0] + b[k-1]
}
}
public static void main(String args[]){
int[] A = {1,4,6,8,10};
int[] B = {1,4,5,7,8};
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0;i<A.length;++i){
for(int j=0;j<B.length;++j){
set.add(A[i]+B[j]);
}
}
Integer[] AB = set.toArray(new Integer[0]);
Arrays.sort(AB);
for(int m=0;m<AB.length;++m){
System.out.println("第"+ (m+1) + "小的数:" + AB[m]);
}
}
}
如果像楼主的距离那样,相同的S值也要重复占位的话,把HashSet替换为ArrayList即可