两个有序数组,A[k]和B[k]长度都为k。求前k个最小的(a[i]+b[j])
来源:互联网 发布:三国杀2015珍藏版淘宝 编辑:程序博客网 时间:2024/05/17 08:08
设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中最小的那一边的数;
- 两个有序数组,A[k]和B[k]长度都为k。求前k个最小的(a[i]+b[j])
- 两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
- 搜狗2014年笔试题-两递增数组A和B,求A[i]+B[j]中前k个最小值
- 搜狗2014年笔试题-两递增数组A和B,求A[i]+B[j]中前k个最小值(Java)
- 搜狗2014年笔试题-两递增数组A和B,求A[i]+B[j]中前k个最小值(Java)
- 求两个有序数组A和B的第k大的数——Java
- 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列,对于1<=i,j<=k,求k个最小的(ai+bj),要求算法尽量高效
- 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列。对于1<=i,j<=k,求k个最小的(ai+bj)。要求算法尽量高效。
- 有两个序列A和B,求k个最小的(ai+bj)
- 三个已排序的数组a,b,c,求i,j,k使a[i]=b[j]=c[k]
- 2012年成都Onsite (A,B,I,J,K)
- 复杂度为log(m+n)下求有序数组A和B有序合并之后第k小的数
- 给定有序序列 a,b,求出所有a[i]+b[j]中所的第k小的数
- Codeforces 61E Enemy is weak 求i<j<k && a[i]>a[j]>a[k] 的对数 树状数组
- 有序数组a,b,找出a,b(合并为一个大的有序数组后)中第k个数
- 关于Lintcode734形式为a^i b^j c^k的子序列数量
- 形式为a^i b^j c^k的子序列数量-LintCode
- LintCode 练习-734. 形式为a^i b^j c^k的子序列数量
- /有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4
- PHP 导出Excel一点小经验 解决乱码问题
- 以考带学操作系统(进程)
- 判断二叉树中两个节点的最低共同父节点
- 选定目标和非功利性学习
- 两个有序数组,A[k]和B[k]长度都为k。求前k个最小的(a[i]+b[j])
- Struts1与Struts2原理 区别 详解 汇总
- 编译原理之文法二
- 配置httpd - linux
- hdu2603
- ios中的delegate的理解运用
- hdu 1215(七夕节)
- 高手之Convert C++ To C#
- String与Stringbuilder的联系