美文网首页
【剑指Offer刷题小记】和为S的两个数字(JAVA版)

【剑指Offer刷题小记】和为S的两个数字(JAVA版)

作者: park_one | 来源:发表于2020-04-04 12:18 被阅读0次

    题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    输出描述:对应每个测试案例,输出两个数,小的先输出。

    题目分析:若两个数a、b(a≤b)的和为S,则有(a+m)+(b-m) = s,而(a+m)*(b-m)=ab+(b-a)*m-m*m≥ab,所以越外层的ab乘积越小。因此可以定义两个指针分别指向数组的左右两边,判断他们的和是否为S,若小于S则左指针右移,若大于S则右指针左移,直到两个数之和等于S即可返回。代码截图:

    相关文章

      网友评论

          本文标题:【剑指Offer刷题小记】和为S的两个数字(JAVA版)

          本文链接:https://www.haomeiwen.com/subject/ozwdphtx.html