《剑指offer》——和为S的两个数字
来源:互联网 发布:空气湿度计算软件 编辑:程序博客网 时间:2024/05/22 19:50
T:
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:
对应每个测试案例,输出两个数,小的先输出。
注意到数组有序,最基本的做法,那就是两层循环,挨个找,但是耗时,时间复杂度为
两者比较,始终以前面的pre指针为准,比
当然,如果等于
还是回到上一个式子,既然小于
code:
import java.util.ArrayList; import java.util.List; /** * T: 和为S的两个数字 * * 题目描述 * 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, * 如果有多对数字的和等于S,输出两个数的乘积最小的。 * * 输出描述: * 对应每个测试案例,输出两个数,小的先输出。 * * date: 2015.11.26 17:07 * @author SSS * */ public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> result = new ArrayList<Integer>(); if (array == null) { return result; } // 设定前后两个指针,从两端向中间走 int preIndex = 0; int postIndex = array.length - 1; while (preIndex < postIndex) { int preNum = array[preIndex]; int postNum = array[postIndex]; // 大于的情况下,说明后面的指针所指向的值偏大,往前走一个长度,再试试 if (preNum + postNum > sum) { postIndex --; } else if (preNum + postNum == sum) { if (result.size() == 0) { // 碰到的第一个相等的就直接装进去 result.add(preNum); result.add(postNum); } else { if (result.get(0) * result.get(1) > preNum * postNum) { result.remove(0); result.remove(0); result.add(preNum); result.add(postNum); } } // 因为两者相等,那么两个指针都要走一步 preIndex ++; postIndex --; } else { //小于,preIndex就要往前走一步 preIndex ++; } } return result; } }
0 0
- 《剑指offer》——和为S的两个数字
- 剑指offer——和为S的两个数字
- 剑指offer——和为S的两个数字
- 剑指offer——和为S的两个数字
- 剑指offer—和为S的两个数字
- 剑指offer—-和为S的两个数字
- 剑指offer—和为s的两个数字
- 剑指offer — 和为S的两个数字
- 剑指offer——和为s的两个数字VS和为s的连续正数序列
- 剑指offer 面试题41—和为s的两个数字VS和为s的连续正数序列
- 剑指offer——和为s的两个数字且乘积最小
- 剑指offer(java代码)——和为S的两个数字
- 剑指Offer——(41)和为S的两个数字
- 剑指Offer—42—和为S的两个数字
- 剑指offer——面试题41:和为s 的两个数字
- 剑指offer系列源码-和为S的两个数字
- 剑指offer--和为S的两个数字
- 《剑指offer》和为S的两个数字
- python学习笔记(13)
- 高性能MySql进化论(八):表以及索引的维护
- Java学习笔记(多线程_1)
- 异常之org.hibernate.HibernateException: No CurrentSessionContext configured
- process credentials相关的用户空间文件(/etc/passwd /etc/shadow /etc/group )
- 《剑指offer》——和为S的两个数字
- 高性能MySql进化论(九):查询优化器常用的优化方式
- 二维码的扫描--iOS
- String、StringBuffer与StringBuilder之间区别
- 使用类图实现的另类排序
- osx mac 安装 oracle instant client
- C++矩阵库 Eigen 快速入门
- 电池使用保养
- android 截取当前屏幕保存到sd卡中