算法系列——和为S的两个数
来源:互联网 发布:微商网站源码 编辑:程序博客网 时间:2024/06/05 16:13
##题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
解题思路
指针对撞法,采用双指针法,i,j从数组两端开始往中间靠拢,
如果 array[i]+array[j] < sum 则j++,如果array[i]+array[j]>sum 则 i–,
如果array[i]+array[j]==sum 那么 i++,j– 同时更新最小值。
程序实现
public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> res=new ArrayList<Integer>(); if(array==null) return res; int i=0,j=array.length-1; int min=Integer.MAX_VALUE; while(i<j){ int temp1= array[i]+array[j]; if(temp1==sum){ int temp2= array[i]*array[j]; if(temp2<min){ res.clear(); res.add(array[i]); res.add(array[j]); min=temp2; } i++; j--; } else if(temp1<sum){ i++; } else{ j--; } } return res; }}
阅读全文
0 0
- 算法系列——和为S的两个数
- 面试题41—和为s的两个数
- 和为S的两个数
- 和为S的两个数
- 和为S的两个数
- 和为S的两个数
- 和为S的两个数/TwoSum
- 【剑指offer-解题系列(43)】和为S的两个数
- 剑指offer----和为S的两个数----java实现
- 剑指offer---和为S的两个数
- 剑指offer-41 和为s的两个数和和为s的序列
- 剑指offer系列源码-和为S的两个数字
- 【剑指offer系列】 和为S的两个数字___41
- [剑指offer]和为s的两个数 ; 和为s的连续正整数序列
- 【面试题】和为S的两个数、和为S的连续正数序列
- 每日一题--和为s的两个数||和为s的连续整数列
- 算法理解——寻找和为定值的两个数/多个数
- 算法系列——和为S的连续正数序列
- 机器学习该怎么入门?
- linux环境编译FFMPEG
- NSGA2算法中文版详细介绍
- java笔试题:数组查找,查找和为最大的子数组
- EasyWeChat、微信公众平台实现带参数二维码、微信事件处理以及微信详细用户信息获取
- 算法系列——和为S的两个数
- recyclvewi的adapter一个强大框架
- Vue操作DOM 和 自定义指令的钩子
- textarea 自适应内容高度
- 分布式架构--简易版支付系统
- 对糖尿病数据进行PCA降维
- 学习笔记24- C/C++ 字符串分割函数
- 编写 DockerFile
- MySQL数据库优化的八种方式