和为S的两个数

问题描述
    给出一个递增数组和一个目标值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的连续的正整数 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的...
    稀饭粥95阅读 154评论 0 0
  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 1,849评论 0 2
  • 算法思想贪心思想双指针排序快速选择堆排序桶排序荷兰国旗问题二分查找搜索BFSDFSBacktracking分治动态...
    第六象限阅读 3,424评论 0 0
  • 1、内容 当供小于求,商家通过拍卖获得高价;当供大于求,且急需清理库存量的时候,顾客通过逆向拍卖获得低价。 拍卖,...
    边度2016阅读 288评论 0 0
  • 平生看惯风摆柳, 江湖漂泊少情义! 腰间龙泉呼欲出, 却道天凉秋风起。 皇图霸业不复在, 把盏问君何处去? 遥遥西...
    云先生_2017阅读 302评论 0 1