剑指offer——和为S的两个数字或连续正数序列

题目描述

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

代码

两个指针,一个从前往后,一个从后往前,分别判断两数的和,这样满足条件的第一组就是乘积最小的,因为两个数字之间的距离最大。

同样的思想,扩展到和为 S 的连续正数序列

题目描述

输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

代码

两个指针,思路同上,但是需要注意,当 cur > sum 时,我们是把最小的数去掉,而不是将最大值去掉,因为从 small 到当前 big - 1 的情况已经考虑过了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容