和为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的两个数

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