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

本文探讨了两个有序数组A和B的最小组合问题,通过分析得出最小组合必定来自数组的起始元素,并提出了一种时间复杂度更低的算法思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设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中最小的那一边的数;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值