zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python 四数之和

Python 四数
2023-09-14 09:15:50 时间


# -*- coding: utf-8 -*-
"""
Created on Sat Jul 17 17:23:50 2021

@author: luogantt
"""        
class Solution(object):

    def cartesian_product(self,a,b):
        l = [] #空的集合
        for x in a: #x为a中所有的成员
            for y in b: #y为b中所有的成员
                kk=str(x)+str(y)
    #            print(kk)
                if len(set(kk))==len(kk):
                    l.append(kk) #将所有可能的“有序对”加到“空集合”中
        return l


    def threeSum(self, nums,n):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        a=list(range(len(nums)))
        c=a
        
        
        
        for p in range(n-1):
            c=self.cartesian_product(c,a)
        temp=[]
        for k in c:
            t1=list(k)
            t1.sort()
            t2=''.join(t1)
#            print(t2)
            if t2 not in temp:
                temp.append(t2)


        all_combin=[]     
        for p  in temp:
            p1=[int(m) for m in p]
            count=0
            for q in p1 :
                count+=nums[q]
            if count==0:
#                print(p1)
                all_combin.append([nums[k] for k in p1])
        return all_combin
        
nums = [1,0,-1,0,-2,2]
c=Solution()
import time
t1=time.time()

#计算几个数之和,下面就填几
c1=c.threeSum( nums,4)
print(time.time()-t1)

print(c1)

0.003011465072631836
[[1, 0, -1, 0], [1, -1, -2, 2], [0, 0, -2, 2]]