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

    题目描述

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

    输出描述:

    对应每个测试案例,输出两个数,小的先输出。
    

    思路一

    TIM图片20190412163536

    代码

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
           ArrayList<Integer> list = new ArrayList<>();
            if(array == null || sum == 0) return list;//return list
    
            int len = array.length;
            int low = 0;
            int high = len - 1;
            int curSum = array[low] + array[high];
    
            int multi = Integer.MAX_VALUE;
    
            while(low < high){
                curSum = array[low] + array[high];//更新了指针的值,需要更新和值
                if(curSum == sum){
                    int curMulti = array[low] * array[high];
                    if(curMulti < multi) {
                        list.clear();
                        list.add(array[low]);
                        list.add(array[high]);
                        multi = curMulti;//记得替换乘积
                    }
                    low++;//记得继续向右移
    
                }else if(curSum > sum){
                    high--;
                }else {
                    low++;
                }
            }
    
            return list;
    
        }
    }
    
  • 相关阅读:
    对现有Hive的大表进行动态分区
    Hive表分区
    Hive常用的SQL命令操作
    Hadoop分布式安装
    Hadoop命令摘录
    HDFS基本知识整理
    Hive基本命令整理
    Hadoop
    淘宝数据魔方技术架构解析
    Eclipse 下 opennms 开发环境搭建
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10698538.html
Copyright © 2011-2022 走看看