和为S的两个数

作者: NetCedar | 来源:发表于2018-10-14 18:51 被阅读0次

问题描述
    给出一个递增数组和一个目标值s,找出和为s的两个数
问题解法
    定义两个指针start,end,分别指向头与尾。如果两指针对应的数字相加大于s,则左移end指针,否则右移start指针
代码如下

import java.util.ArrayList;

/**
 * 和为S的两个数
 */
public class FindNumbersWithSum {
    public static ArrayList<Integer> FindNumbersWithSum(int [] array, int sum) {
        ArrayList<Integer> result=new ArrayList<Integer>();

        if (array==null||array.length<=0){
            return result;
        }

        //定义两个指针,一个指向开始,一个指向末尾
        int start=0;
        int end=array.length-1;


        while (start<end){
            //数小,左指针后移
            if ((array[start]+array[end])<sum){
                start++;
            }else if ((array[start]+array[end])>sum){
                end--;  //数大 左移
            }else {
                result.add(array[start]);
                result.add(array[end]);

                System.out.println(array[start]+":"+array[end]);
                break;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int array []={1,2,4,7,11,15};
        System.out.println(FindNumbersWithSum(array,15).);
    }
}

相关文章

  • 和为S的两个数

    问题描述给出一个递增数组和一个目标值s,找出和为s的两个数问题解法定义两个指针start,end,分别指向头与尾。...

  • 和为S的两个数

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

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

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

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

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

    题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输...

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

    时间限制:1秒 空间限制:32768K 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们...

网友评论

    本文标题:和为S的两个数

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