剑指offer-和为S的两个数字
2016-03-15 12:23
363 查看
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。分析:左右相逼
乘积最小证明:
* 假设:找到两组满足条件的数组对(x,y)、(x+a,y-a),其中(x+y=S, 0<a<y-x)
* x*y-[(x+a)(y-a)]
* =x*y-x*y-(y-x)a+a2
* =a[a-(y-x)]
* 因为0<a<y-x,所以a-(y-x)<0,所以a[a-(y-x)]<0
* 因此(x,y)乘积一定比(x+a,y-a)小
import java.util.ArrayList; public class Solution { public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) { ArrayList arrayList=new ArrayList(); if (array.length < 1) { return arrayList; } int start = 0, end = array.length - 1; while (start < end) { int cursum = array[start] + array[end]; if (cursum == sum) { arrayList.add(array[start]); arrayList.add(array[end]); break; }else if(cursum>sum){ end--; }else{ start++; } } return arrayList; } }
相关文章推荐
- jsp页面的js定时器的实现和关闭(不跳转页面)
- 使用Javascript实现客户端数据验证
- 7.2 Javascript:表单验证-提交表单
- React库protypes属性
- 翻翻git之---RecycleView的上拉,下拉刷新,样式切换,添加foot和header的强大库 RecyclerViewManager
- 翻翻git之---RecycleView的上拉,下拉刷新,样式切换,添加foot和header的强大库 RecyclerViewManager
- 一个简单的ajax+servlert+jsp的完整实例
- phoneGap&jquery mobile
- JavaScript 弱类型浅谈
- ie7,ie8 js中变量名和页面元素ID重名,报错
- 如何从bufferreader reader.readline() 获取特定编码的字符串
- AngularJS入门
- 【html5和css3】transition属性整理
- 剑指offer-和为S的连续正数序列
- Json解析简单数据<二>
- 【js】前端分页js
- GDataXMLNode应用
- HTML5学习(十一)---服务器发送事件
- HTML5学习(十)---Web Workers
- HTML5学习(九)----应用程序缓存