zoukankan      html  css  js  c++  java
  • [刷题] 454 4Sum II

    要求

    • 给出四个整型数组ABCD,寻找有多少 i j k l 的组合,使得A[i]+B[j]+C[k]+D[l]=0
    • ABCD元素个数均为N,0<=N<=500

    示例

    • 输入:

      A = [ 1, 2]

      B = [-2,-1]

      C = [-1, 2]

      D = [ 0, 2]

    • 输出:2

      1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0

      2. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0

    思路

    • 暴力解法,遍历A+B+C+D(n4,约63亿次运算)
    • 将D中元素放入查找表,遍历A+B+C(n3,约1.25亿次运算,一般计算机难以在1s内完成)
    • 将C+D的每一种可能放入查找表,遍历A+B(n2,25万个元素的查找表,25万次运算)
    • 和可能重复,使用map,记录每个和出现了多少次
     1 class Solution {
     2 public:
     3     int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
     4         
     5         unordered_map<int,int> record;
     6         for( int i = 0 ; i < C.size() ; i ++ )
     7             for( int j = 0 ; j < D.size() ; j ++ )
     8                 record[ C[i] + D[j] ] ++;
     9         
    10         int res = 0;
    11         for( int i = 0 ; i < A.size() ; i ++ )
    12             for( int j = 0 ; j < B.size() ; j ++ )
    13                 if( record.find( 0 - A[i] -B[j] ) != record.end() )
    14                     res += record[ 0 - A[i] -B[j] ];
    15         
    16         return res;   
    17     }
    18 };
    View Code

    相关

    • 49 Group Anagrams
  • 相关阅读:
    太湖杯WriteUp
    第九届网安竞赛writeup
    湖湘杯2020 writeup
    利用DNS缓存和TLS协议将受限SSRF变为通用SSRF
    十月学习计划
    2020GACTF部分wp
    2020 天翼杯 部分wp
    DASCTF 安恒七月赛wp
    开发步骤
    垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12617817.html
Copyright © 2011-2022 走看看