美文网首页
(双移动指针)和为S的两个数字

(双移动指针)和为S的两个数字

作者: 壹豪 | 来源:发表于2019-08-13 10:18 被阅读0次

    题目描述

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

    输出描述:

    对应每个测试案例,输出两个数,小的先输出。

    思路

    和"和为S的连续正整数序列类似",但是双指针从头尾开始即可,往中间找的时候,第一对符合要求的数的乘积肯定是最小的,因此直接输出即可

    代码

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
            ArrayList<Integer> list = new ArrayList();
            int left=0,right=array.length-1;
            while(left<right){
                int result = array[left]+array[right];
                if(result==sum){
                    list.add(array[left]);
                    list.add(array[right]);
                    return list;
                }
                else if(result>sum)
                    right--;
                else
                    left++;
            }
            return list;
        }
    }

    相关文章

      网友评论

          本文标题:(双移动指针)和为S的两个数字

          本文链接:https://www.haomeiwen.com/subject/abeyjctx.html