您的位置:首页 > 其它

两个有序数组,A[k]和B[k]长度都为k。求前k个最小的(a[i]+b[j])

2012-10-03 10:50 801 查看
设A={A1,A2,A3,A4,A5,A6,.......} ,B={B1,B2,B3,B4,B5,B6,.......}

因为A和B都是有序的数组,必须充分的利用这点,可能有同学,看到有同学觉得这个题目比较容易,直接将所有的组合都计算出来,然后取最小的K个,其实出题的人是要大家考虑这道题的时间复查度,上面的解法的时间复杂度为o(n2),出题的人的目的是要时间复杂度最小。

 

下面分析如下:

 

因为A和B都是有序的数组,那么最小的那个肯定是a[0]+b[0],举例如下:

A={1,2,4,7,9}

B={2,3,6,8,10}

 

第一个:

1+2=3;

1+3=4;

2+2=4;

2+3=5;

4+2=6;

1+6=7;

4+3=7;

2+6=8;

1+8=9;

7+2=9;

 

 

第一个数:

a[0]+b[0],

 

第2个数为A2-A1,和B2-B1中最小的那一边的数;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐