zoukankan      html  css  js  c++  java
  • 求两个乘积最小的数

    (一)题目: 求两个乘积最小的数 

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

    思路:
    定义两个指针,分别从前面和后面进行遍历,间隔越远的乘积越小,所以是最先出现的两个数乘积最小

    (二)代码及测试

    package com.example.offer;
    
    import java.util.ArrayList;
    
    /**
     * 求两个乘积最小的数
     *
     * 题目:
     *    输入一个递增排序的数组和一个数字S,在数组中查找两个数,
     * 使得他们的和正好是S,如果有多对数字的和等于S,输出乘积最小的两个数
     *
     * 思路:
     *    定义两个指针,分别从前面和后面进行遍历,间隔越远的乘积越小,所以是最先出现的两个数乘积最小
     * @author zhangchaocai
     * @create 2020-06-28 9:55
     */
    public class offer1 {
    
        public static void main(String[] args) {
    
            //数组定义的三种方式,写的时候,突然忘了怎么定义,复习一下。擦擦擦
            // 第一种 int[] a = new int[10];
            // for(int i = 0; i < a.length ; i++){
            //     a[i] = i;
            // }
    
            // 第二种
            //int[] b = new int[]{0, 1, 2, 3, 4, 5, 6};
    
            //第三种
            int[] array = {1,2,3,4,5,6,7,8,9,10};
            int sum = 12;
            ArrayList<Integer> numberWithSum = getNumberWithSum(array, sum);
    
            System.out.println("成立的数字为: " + numberWithSum);
        }
    
    
        public static ArrayList<Integer> getNumberWithSum(int array[],int sum){
    
            ArrayList<Integer> list = new ArrayList<>();
            if (array == null || array.length == 0) {
                return list;
            }
    
            int left = 0;
            int right = array.length - 1;
    
            while (left < right){
                int s = array[left] + array[right];
    
                if(s == sum){
                    list.add(array[left]);
                    list.add(array[right]);
                    return list;
                }else{
                    if(s > sum){
                        right--;
                    }else{
                        left++;
                    }
                }
            }
            return list;
        }
    }

     (三)运行结果

       


          去做想做的

              快乐......

  • 相关阅读:
    CSS------添加注释框
    MyEclipse------制作通讯录
    JavaScript------入门
    JSTL标签库简介
    过滤器在Web开发应用------解决中文乱码
    Servlet------(声明式)异常处理
    电脑环境变量里面的参数
    MyEclipse------黑科技
    MyEclipse------从MySQL取出图片
    MyEclipse------带进度条的输入流
  • 原文地址:https://www.cnblogs.com/misscai/p/13201828.html
Copyright © 2011-2022 走看看