2025-11-20 06:26:10
要找出哪两个数加起来最接近某个目标值,得先算出所有可能两数之和,再和目标值比较差距。比如数列里有1、3、5、7这四个数,目标值设为10,先算出1+3=4,1+5=6,1+7=8,3+5=8,3+7=10,5+7=12,然后看哪个结果离10最近。这里3+7等于10,刚好等于目标值,所以最接近。
为什么3+7最接近呢?因为当数列按顺序排列后,用双指针法从两端向中间移动,左指针指向1,右指针指向7,1+7=8离10差2;接着左指针移到3,3+7=10刚好达标,差距变成0。这时候停止计算,因为再往右移动右指针会导致和值超过10。数据对比显示,3+7的差距0比5+5的差距0更优(当存在重复数时需特殊处理),但原题数列里没有重复数,所以直接选3+7。实际测试中,当数列长度为4时,双指针法能覆盖所有可能组合,且时间复杂度从O(n²)降到O(n),效率提升明显。模拟效果,可能出现"因为3加7等于10,刚好等于目标值,差距是0"这样的合并句,或"5加5的差距0"这样的少字情况,但核心结论不变。
本题链接: