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

    题目描述

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

    输出描述:

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

    注意:目前变量满足条件时,要记得将index值进行增减操作。进行所有操作后,最后得到的可能不满足要求,所以最后返回的时候要对结果进行判断看是否满足要求。

    class Solution {
    public:
        vector<int> FindNumbersWithSum(vector<int> array,int sum) {
            if(array.size() == 0){
                return {};
            }
            
            int begin = 0,end = array.size() - 1;
            int tmp = 0;
            int resSmall = 0,resBig = 0;
            int Min = INT_MAX;
            while(begin < end){
                tmp = array[begin] + array[end];
                if(tmp == sum){
                    int mul = array[begin] * array[end];
                    if(mul < Min){
                        Min = mul;
                        resSmall = array[begin];
                        resBig = array[end];
                    }
                    ++begin;
                }
                if(tmp > sum){
                    --end;
                }
                if(tmp < sum){
                    ++begin;
                }
            }
           
            vector<int> result;
            if(resSmall + resBig == sum){
                result.push_back(resSmall);
                result.push_back(resBig);
            }
            return result;
            
        }
    };
     
  • 相关阅读:
    Eclipse显示行号
    Eclipse中让Scala缩进变为4
    阿里云Maven仓库
    Eclipse格式化整个项目
    Spring拦截器
    Spring配置redis及使用
    Java加密数据库
    Eclipce远程调试
    服务器部署Java Web及微信开发调试
    基本MVC2模式创建新闻网站
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7496389.html
Copyright © 2011-2022 走看看