44.和为S的两个数字
2024-10-07 16:52:09
题目描述:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
思路分析:
数组是递增排序的,我们先将数组遍历一遍,然后将数组中元素的下标和值存进map中。然后从头开始遍历数组,查看S减去当前元素的值后的数是否在map中,如果在那么我们就找到了满足要求的结果,因为和相同,两个数差越大,他们的积就越小。所以第一个满足条件的就是乘积最小的。如果不在,就往下遍历。
代码:
import java.util.*;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer>res=new ArrayList<>();
if(array==null||array.length==0)
return res;
HashMap<Integer,Integer>map=new HashMap<>();
for(int i=0;i<array.length;i++){
map.put(i,array[i]);
}
for(int j=0;j<array.length;j++){
if(map.containsValue(sum-map.get(j))){
res.add(map.get(j));
res.add(sum-map.get(j));
break;
}
}
return res;
}
}
最新文章
- CentOS7安装Oracle 11gR2 安装
- Innodb 表空间传输迁移数据
- 分页sql优化
- MFC 字符串类CString 源代码
- Android Material Design控件学习(一)——TabLayout的用法
- CSS--复习之旅(一)
- shell字符串和数组
- Android 网络编程 Socket
- Drupal如何更新注册表?
- C++中回调函数(CallBack)的使用
- 【OC语法快览】四、基础内存管理
- 【RequireJS--API学习笔记】
- 日常API之C#百度人脸识别
- C#PreviewKeyDown 与KeyDown 区别
- JAVA8之lambda表达式具体解释,及stream中的lambda使用
- Disruptor并发框架 (二)核心概念场景分析
- linxu安装SNMP
- 软件测试-培训的套路-log3
- python Excel数据导出
- php 依赖注入的实现
热门文章
- SELECT INTO - 从一个查询的结果中创建一个新表
- rk3288 android5.1 修改时区
- Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本
- 九、Rxjs请求对Observable进行封装
- Sass--调用混合宏
- APPScan安全测试工具
- django model的get和filter方法的区别
- vue项目中使用echarts地图
- 回炉Spring--Bean生命周期及AOP
- 误删SQL Server日志文件后怎样附加数据库