题目描述:

  输入一个递增排序的数组和一个数字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;
}
}

最新文章

  1. CentOS7安装Oracle 11gR2 安装
  2. Innodb 表空间传输迁移数据
  3. 分页sql优化
  4. MFC 字符串类CString 源代码
  5. Android Material Design控件学习(一)——TabLayout的用法
  6. CSS--复习之旅(一)
  7. shell字符串和数组
  8. Android 网络编程 Socket
  9. Drupal如何更新注册表?
  10. C++中回调函数(CallBack)的使用
  11. 【OC语法快览】四、基础内存管理
  12. 【RequireJS--API学习笔记】
  13. 日常API之C#百度人脸识别
  14. C#PreviewKeyDown 与KeyDown 区别
  15. JAVA8之lambda表达式具体解释,及stream中的lambda使用
  16. Disruptor并发框架 (二)核心概念场景分析
  17. linxu安装SNMP
  18. 软件测试-培训的套路-log3
  19. python Excel数据导出
  20. php 依赖注入的实现

热门文章

  1. SELECT INTO - 从一个查询的结果中创建一个新表
  2. rk3288 android5.1 修改时区
  3. Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本
  4. 九、Rxjs请求对Observable进行封装
  5. Sass--调用混合宏
  6. APPScan安全测试工具
  7. django model的get和filter方法的区别
  8. vue项目中使用echarts地图
  9. 回炉Spring--Bean生命周期及AOP
  10. 误删SQL Server日志文件后怎样附加数据库