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

    题目描述

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
     
    思路:夹逼(可以保证输出两个数的乘积最小的,举例说明:2 3 4 5 12 13 14 15 输出和为17的两个数,显然2和15的乘积小于其他两个数的乘积)。
     
     1 import java.util.ArrayList;
     2 public class Solution {
     3     public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
     4         ArrayList<Integer> list=new ArrayList<>();
     5         if(array==null || array.length==0)
     6             return list;
     7         int i=0,j=array.length-1;
     8         while(i<j) {
     9             if(array[i]+array[j]==sum) {
    10                 list.add(array[i]);
    11                 list.add(array[j]);
    12                 return list;
    13             }
    14             else if(array[i]+array[j]>sum)
    15                 j--;
    16             else
    17                 i++;        
    18         }
    19         return list;  
    20     }
    21 }
  • 相关阅读:
    关于位运算(转)
    计蒜客第三场
    数组与指针
    计蒜客第二场
    指针概念
    爬楼梯(动态规划)
    线性表基本操作的实现(合并)
    4123=喵帕斯之天才少女
    3889=神奇的函数
    1586=计算组合数
  • 原文地址:https://www.cnblogs.com/jacob-wuhan/p/13059727.html
Copyright © 2011-2022 走看看