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

输出描述:
对应每个测试案例,输出两个数,小的先输出。
@思路: 两个数之和一定,差越大,积越小;
1:排除数组为空以及数组长度不够的情况;
2:通过两边往中间靠近的原则
3:while循环,当头小于尾的时候,将符合条件的放入list;
4:当和大于给定的数时,两端的指针往中间靠近;

package LG.nowcoder;

import java.util.ArrayList;

/**
* @Author liguo
* @Description 和为S的两个数字
* @问题 :题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,
* 如果有多对数字的和等于S,输出两个数的乘积最小的。
* 输出描述:
* 对应每个测试案例,输出两个数,小的先输出。
* @思路: 两个数之和一定,差越大,积越小;
* 1:排除数组为空以及数组长度不够的情况;
* 2:通过两边往中间靠近的原则
* 3:while循环,当头小于尾的时候,将符合条件的放入list;
* 4:当和大于给定的数时,两端的指针往中间靠近;
* @Data 2018-09-07 23:31
*/
public class Solution20 {
public ArrayList <Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList <Integer> list = new ArrayList <Integer>();
if (array == null || array.length < 2) {
return list;
}
int index = 0, end = array.length - 1;
while (index < end) {
if (array[index] + array[end] == sum) {
list.add( array[index] );
list.add( array[end] );
return list;
} else if (array[index] + array[end] > sum) end--;
else index++;
}
return list;
}
}

最新文章

  1. VS2013无法启动&#160;IIS Express Web解决办法
  2. uC/OS-II核心(Os_core)块
  3. printf()函数的参数和制表符
  4. Eighth scrum meeting - 2015/11/2
  5. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机
  6. Base-Android快速开发框架(二)--数据存储之SharedPreferences
  7. ruby脚本打印日志到rspec的报告文件中
  8. Unity之极光推送
  9. 通过Type.InvokeMethod实现方法的重载
  10. Java对象序列化/反序列化的注意事项(转)
  11. 删除bin后,Eclipse重新编译项目
  12. Express - 入门
  13. html-webpack-plugin的使用
  14. 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)
  15. centos7安装Wkhtmltopdf
  16. HTML Table to Json
  17. SpringBoot 推荐博客
  18. bash编程-grep
  19. AI金融知识自学偏量化方向-前提1
  20. css3属性兼容性

热门文章

  1. [Swift]LeetCode823. 带因子的二叉树 | Binary Trees With Factors
  2. [Swift]LeetCode871. 最低加油次数 | Minimum Number of Refueling Stops
  3. IP地址个数的计算原理
  4. springboot中实现多数据源
  5. HBase之Table.put客户端流程
  6. java面向对象三大特性:封装、继承、多态
  7. ASP.NET Core 2.0 MVC - 获取当前登录用户信息
  8. tomcat的catalina.out日志按自定义时间日式进行分割
  9. ASP.NET Core Mvc中空返回值的处理方式
  10. Hive 导入 parquet 格式数据