和为S的两个数字

来源:互联网 发布:windows phone 输入法 编辑:程序博客网 时间:2024/04/30 21:19

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。

import java.util.ArrayList;public class Solution {    public ArrayList<Integer> FindNumbersWithSum(int [] a,int sum) {        int p = 0;        int q = a.length - 1;        ArrayList<Integer> rst = new ArrayList<Integer>();        while(p < q){            if(a[p] + a[q] == sum){                rst.add(a[p]);                rst.add(a[q]);                break;            } else if(a[p] + a[q] > sum){                q --;            } else {                p ++;            }        }        return rst;    }}

典型的双指针的应用
ps:两个数离得越开成绩越小

0 0
原创粉丝点击