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

    题目描述

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

     1 class Solution {
     2 public:
     3     vector<int> FindNumbersWithSum(vector<int> array,int sum) {
     4         vector<int> vv;
     5         int len = array.size();
     6         if (len < 2)
     7             return vv;
     8         map<int,int> mm;
     9         for (int i = 0;i < len ; ++i)
    10         {
    11             if(mm.count(array[i]) == 0)
    12             {
    13                 mm[array[i]] = 1;
    14             }
    15             else
    16             {
    17                 ++mm[array[i]];
    18             }
    19         }
    20         int i = 0;
    21         bool have = 0;
    22         for (;i < len/2 + 1 ; ++i)
    23         {
    24             --mm[array[i]];
    25             if(mm.count(sum - array[i]) > 0 && mm[sum - array[i]] > 0)
    26             {
    27                 have = 1;
    28                 break;
    29             }
    30             ++mm[array[i]];
    31         }
    32         if(!have)
    33             return vv;
    34         
    35         vv.push_back(array[i]);
    36         vv.push_back(sum - array[i]);
    37         return vv;
    38     }
    39 };
  • 相关阅读:
    分析函数
    Orcal函数
    归档日志
    JSP数据交互
    JSP
    接口
    JAVA修饰符
    QuicKHit
    Java 三章错题
    Java 多态
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/5160915.html
Copyright © 2011-2022 走看看