zoukankan      html  css  js  c++  java
  • leetcode-hard-array-454 4sum II-NO

    mycode   过不了。。。我也不知道为什么。。。

    class Solution(object):
        def fourSumCount(self, A, B, C, D):
            """
            :type A: List[int]
            :type B: List[int]
            :type C: List[int]
            :type D: List[int]
            :rtype: int
            """
            def deal(i,j,k,l):
                if [i,j,k,l] not in self.record:
                    self.record.append([i,j,k,l])
                else:
                    return 
                #print(self.res,i,j,k,l)
                if i < I and j < J and k < K and l < L:
                    if A[i] + B[j] + C[k] + D[l] == 0:
                        self.res += 1
                        print(self.res,i,j,k,l)
                    elif A[i] + B[j] + C[k] + D[l] < 0:
                        deal(i,j,k,l+1)
                        deal(i,j,k+1,l)
                        deal(i,j+1,k,l)
                        deal(i+1,j,k,l)
                    else:
                        return 
                else:
                    return 
                
            A,B,C,D = sorted(A),sorted(B),sorted(C),sorted(D)
            i,j,k,l = 0,0,0,0
            I,J,K,L = len(A),len(B),len(C),len(D)
            self.res = 0
            self.record = []
            deal(i,j,k,l)
            return self.res

    参考

    class Solution(object):
        def fourSumCount(self, A, B, C, D):
            """
            :type A: List[int]
            :type B: List[int]
            :type C: List[int]
            :type D: List[int]
            :rtype: int
            """
            
            from collections import Counter
            dicA , dicB ,dicC ,dicD = Counter(A), Counter(B), Counter(C), Counter(D)
            res = 0
            dic = {}
            for a , a_nember in dicA.items():
                for b , b_nember in dicB.items():
                    dic[a+b] = dic.get(a+b,0) + a_nember * b_nember 
    #例如2+(-1)=1,而A中2的数量*B中-2的数量+B中2的数量*A中-2的数量就等于A和B中元素和为1的组合数
    for c, c_nember in dicC.items(): for d, d_nember in dicD.items(): res += dic.get(-c-d,0) * c_nember * d_nember return res
  • 相关阅读:
    spring-cloud 微服务
    oracle高级部分
    RabbitMq
    如何创建个人网站
    redis
    restFull api接口
    mongodb replSet upgrade
    mongodb sharding upgrade
    Oracle索引梳理系列(三)- Oracle索引种类之反向索引
    Oracle索引梳理系列(二)- Oracle索引种类及B树索引
  • 原文地址:https://www.cnblogs.com/rosyYY/p/11038716.html
Copyright © 2011-2022 走看看