剑指offer—和为s的两个数字
2017-12-11 08:52
253 查看
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
思路:由于数组是递增的,因此可以使用一头一尾两个指针,如果两个指针对应的数组值等于目标值则返回,如果大于目标值,则后面的指针前移,反之,前面的指针后移
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
import java.util.ArrayList; public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> res = new ArrayList<Integer>(); if(array==null || array.length<=0) return res; int index1 = 0; int index2 = array.length-1; while(index1<index2){ if(array[index1]+array[index2]==sum){ res.add(array[index1]); res.add(array[index2]); break; }else if(array[index1]+array[index2]<sum){ index1++; }else{ index2--; } } return res; } }
思路:由于数组是递增的,因此可以使用一头一尾两个指针,如果两个指针对应的数组值等于目标值则返回,如果大于目标值,则后面的指针前移,反之,前面的指针后移
相关文章推荐
- 【剑指offer】【41】找出升序数组中和为给定值的两个数字
- 【剑指offer】面试题56(1):数组中只出现一次的两个数字
- 剑指offer 和为s的两个数字的调试
- 剑指Offer39 数组中寻找和为sum的两个数字
- 剑指offer — 和为S的两个数字
- 剑指offer---和为s的两个数字VS和为s的连续正数序列
- 【剑指offer】数组中找两个不重复数字
- 剑指offer 43 和为S的两个数字
- 剑指offer 41题【知识迁移能力】和为S的两个数字
- 剑指Offer(57)和为S的两个数字
- [剑指offer]和为S的两个数字
- 剑指offer--和为S的两个数字
- 剑指Offer——(41)和为S的两个数字
- 剑指offer-题目1352:和为S的两个数字 (2014.2.10)
- 剑指offer面试题之和为S的两个数字
- 剑指offer—-和为S的两个数字
- 【剑指Offer学习】【面试题41:和为s 的两个数字vs 和为s 的连续正数序列】
- 剑指Offer 41 和为s的两个数字vs和为s的连续正整数列
- 剑指Offer之和为S的两个数字
- 剑指Offer_面试题41_和为s的两个数字 VS 和为s的连续正数序列