剑指offer----和为S的两个数----java实现
来源:互联网 发布:ev3相扑机器人编程教程 编辑:程序博客网 时间:2024/05/16 05:20
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
分析要求:
(1)数组是递增的数组;即数据已经是有序的了。
(2)输出乘积最小的一对和为S的数;和相等的情况下,两个数相差越大,乘积越小。
思路:
定义两个指针,一个是指向数组的起始位置变量设为low,一个指向数组的终止位置处变量设为high。
1)如果和为S则停止查找。跳出当前循环
2)如果和小于S则low++,
3)如果和大于S则high--;
import java.util.ArrayList;public class Sum{public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> list = new ArrayList<Integer>(); if(array.length == 0 ||array==null) { return list; } int low = 0;//让一个引用变量指向数组的头 int high = array.length - 1;//一个引用变量指向数组的尾 while(low < high) { int cursum = array[low]+array[high]; //当找到第一组和为S的数对就停止寻找,因为第一对的两个数之间相差最大,乘积最小 if(cursum == sum) { list.add(array[low]); list.add(array[high]); break; } else if(cursum < sum) { low++; } else { high--; } } return list;}}
0 0
- 剑指offer----和为S的两个数----java实现
- 剑指offer---和为S的两个数
- 剑指offer-41 和为s的两个数和和为s的序列
- [剑指offer]和为s的两个数 ; 和为s的连续正整数序列
- 【剑指offer】题41:和为s的两个数VS连续正整数之和为S
- 《剑指offer》:[41]数组中和为S的两个数
- 剑指offer-数组中和为S的两个数
- 【剑指offer】面试题41-和为S的两个数VS和为S的连续正数序列
- 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列
- 【剑指offer-解题系列(43)】和为S的两个数
- 【剑指Offer】面试题41:和为S的两个数
- 【剑指offer-Java版】41和为s的两个数字VS和为s的连续正数序列
- 剑指offer:和为s的两个数字VS和为s的连续正数序列(java)
- 剑指Offer面试题41:求和为s的两个数字;求和为s的连续正数序列 Java实现
- 剑指offer系列源码-和为S的两个数字
- 剑指offer--和为S的两个数字
- 《剑指offer》和为S的两个数字
- 剑指offer—和为S的两个数字
- iOS 技术博客
- [leetcode解题]Add Two Numbers
- 搭建VPN服务器以及连接vpn
- 总结
- window 配置redis node 使用redis
- 剑指offer----和为S的两个数----java实现
- 华为OJ 初级 输出单向链表中倒数第k个结点
- qt creator
- win7 64位Darwin Streaming Server安装
- Unable to load native-hadoop library for your platform
- Java中使用OpenSSL生成的RSA公私钥进行数据加解密
- char代表有符号还是无符号?
- 总结
- myeclipse+svn+maven+tomact环境搭建