zoukankan      html  css  js  c++  java
  • 剑指offer四十二之和为S的两个数字

    一、题目

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

    二、思路

      数列满足递增,设两个头尾两个指针i和j,若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j --;

           若ai + aj < sum,ai肯定不是答案之一(前面已得出 j 后面的数已是不可能),i ++;

           若ai + aj == sum,就是答案(相差越远乘积越小)。

    三、代码

    /*数列满足递增,设两个头尾两个指针i和j,
      若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j -= 1
      若ai + aj < sum,ai肯定不是答案之一(前面已得出 j 后面的数已是不可能),i += 1
      若ai + aj == sum,就是答案(相差越远乘积越小)
        */
    
    import java.util.ArrayList;
    
    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
    
            ArrayList<Integer> arrayList = new ArrayList<Integer>();
            int i = 0;
            int j = array.length - 1;
    
            while (i<j && array[i] + array[j] > sum){
                j--;
            }
    
            while (i<j && array[i] + array[j] < sum){
                i++;
            }
    
            if(i < j && array[i] + array[j] == sum ) {
                    arrayList.add(array[i]);
                    arrayList.add(array[j]);
            }
    
            return arrayList;
        }
    }
    View Code

    ---------------------------------------------

    参考链接:

    https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b

  • 相关阅读:
    Odoo中的Widget
    Odoo中的domain
    Odoo中的模型详解
    Odoo中的模型继承、视图继承、Qweb模板继承详解
    Odoo权限控制详解
    Odoo字段类型详解
    WSGI——python web 服务器网关接口
    Backbone——数据驱动UI的js开发模式
    Underscore——JS函数库
    Werkzeug——python web开发工具包
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7658794.html
Copyright © 2011-2022 走看看