算法:数组中和为s的两个数字
2024-10-09 11:46:02
@问题 :题目描述输入一个递增排序的数组和一个数字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;
}
}
最新文章
- VS2013无法启动&#160;IIS Express Web解决办法
- uC/OS-II核心(Os_core)块
- printf()函数的参数和制表符
- Eighth scrum meeting - 2015/11/2
- windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机
- Base-Android快速开发框架(二)--数据存储之SharedPreferences
- ruby脚本打印日志到rspec的报告文件中
- Unity之极光推送
- 通过Type.InvokeMethod实现方法的重载
- Java对象序列化/反序列化的注意事项(转)
- 删除bin后,Eclipse重新编译项目
- Express - 入门
- html-webpack-plugin的使用
- 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)
- centos7安装Wkhtmltopdf
- HTML Table to Json
- SpringBoot 推荐博客
- bash编程-grep
- AI金融知识自学偏量化方向-前提1
- css3属性兼容性
热门文章
- [Swift]LeetCode823. 带因子的二叉树 | Binary Trees With Factors
- [Swift]LeetCode871. 最低加油次数 | Minimum Number of Refueling Stops
- IP地址个数的计算原理
- springboot中实现多数据源
- HBase之Table.put客户端流程
- java面向对象三大特性:封装、继承、多态
- ASP.NET Core 2.0 MVC - 获取当前登录用户信息
- tomcat的catalina.out日志按自定义时间日式进行分割
- ASP.NET Core Mvc中空返回值的处理方式
- Hive 导入 parquet 格式数据