• 求两个乘积最小的数


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

      题目:
    输入一个递增排序的数组和一个数字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;
        }
    }

     (三)运行结果

       


          去做想做的

              快乐......

  • 相关阅读:
    kali linux安装vm
    视频学习_css基础学习
    w3c_html_study_note_5.26
    备份apt目录节省下载时间
    校园网小记
    [原创汉化]linux前端神器 WebStorm8 汉化
    虚拟机备份转移后,网络启动异常,提示“SIOCSIFADDR: No such device”的解决方案
    python开发之virtualenv与virtualenvwrapper讲解
    Nginx负载均衡概述
    centos7安装python3 以及tab补全功能
  • 原文地址:https://www.cnblogs.com/misscai/p/13201828.html
Copyright © 2020-2023  润新知