zoukankan      html  css  js  c++  java
  • 和为S的两个数字

    问题

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

    分析

      设置两个下标low(初始时,指向数组头)和high(初始时,指向数组尾),当array[low]+array[high]<S时,low++;当array[low]+array[high]>S时,high--;当array[low]+array[high]==S时,即可返回(返回的第一对就是乘积最小的!!!

    代码

     1   public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
     2         ArrayList<Integer> list = new ArrayList<Integer>();
     3         int low = 0, high = array.length-1;
     4         int pro = Integer.MAX_VALUE;
     5         while(low<high){
     6             int temp = array[low]+array[high];
     7             if(temp<sum)
     8                 low++;
     9             else if(temp>sum){
    10                 high--;
    11             }
    12             else{
    13                 list.add(array[low]);
    14                 list.add(array[high]);
    15                 return list;
    16             }
    17             
    18         }
    19         
    20         return list;
    21     }
  • 相关阅读:
    Lambda表达式的演变
    反射小例
    进程外Session
    页面缓存的几种方式
    数据缓存的几种方式
    Session
    Cookie
    AJAX学习
    验证码的实现
    ASP.NET动态显示数据的两种方式
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6951836.html
Copyright © 2011-2022 走看看