zoukankan      html  css  js  c++  java
  • Leetcode-923 3Sum With Multiplicity(三数之和的多种可能)

     1 class Solution
     2 {
     3     private:
     4         int hashList[102];
     5     public:
     6         long long int get(long long int n,long long int m)
     7         {
     8             if(m==1)
     9                 return n;
    10             else if(m==2)
    11                 return (n*(n-1))/2;
    12             else if(m==3)
    13                 return (n*(n-1)*(n-2))/6;
    14         }
    15         int threeSumMulti(vector<int>& A, int target)
    16         {
    17             memset(hashList,0,sizeof(hashList));
    18 
    19             for(auto d:A)
    20                 hashList[d] ++;
    21 
    22             long long int result = 0;
    23             for(int i = 0; i <= target&&i<=100; i ++)
    24             {
    25                 if(hashList[i]>=3 && 3*i==target)
    26                 {
    27                     result += get(hashList[i],3);
    28                     result %= 1000000007;
    29                 }
    30                 if(2*i<target && hashList[i]>=2)
    31                 {
    32                     if(target-2*i > i && target-2*i <= 100 && hashList[target-2*i])
    33                     {
    34                         result += hashList[target-2*i]*get(hashList[i],2);
    35                         result %= 1000000007;
    36                     //    cout << i << " " << i << " " << target-2*i << endl;
    37                     }
    38                 }
    39                 if(hashList[i])
    40                 {
    41                     for(int j = i+1; j <= target && j<=100; j ++)
    42                     {
    43                         if(hashList[j]>=2 && 2*j+i==target)
    44                         {
    45                             result += hashList[i]*get(hashList[j],2);
    46                             result %= 1000000007;
    47                         //    cout << i << " " << j << " " << j << endl;
    48                         }
    49                         if(hashList[j])
    50                         {
    51                             if(target-i-j > j && target-i-j <= 100 && hashList[target-i-j])
    52                             {
    53                                 result += hashList[i]*hashList[j]*hashList[target-i-j];
    54                                 result %= 1000000007;
    55                             //    cout << i << " " << j << " " << target-i-j << endl;
    56                             }
    57                         }
    58                     }
    59                 }
    60             }
    61             result %= 1000000007;
    62             return (int)result;
    63         }
    64 };
  • 相关阅读:

    80老婆如何制服老公的
    男人三件事
    抄袭了一篇散文,很适合现在的我.
    讲个小笑话
    博客的性别???测试下!!!
    十八禁 大全 [转载]
    [转载]男人你没房没车,我凭什么嫁给你!
    电脑维修 小产业高利润
    一美女莫名晕倒 被七男强行拖入森林
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9800056.html
Copyright © 2011-2022 走看看