leetcode.array--18. 4Sum

来源:互联网 发布:护眼软件有用吗 编辑:程序博客网 时间:2024/05/01 20:01

题目:18. 4Sum

问题描述:https://leetcode.com/problems/4sum/description/

大致意思呢就是在一个序列中找到四个数,使得这四个数相加等于target。写了一个N^3暴力查找,过了哈哈哈。只不过这个题目和之前几个一直在算加法再见

Python:

class Solution(object):    def fourSum(self, nums, target):        """        :type nums: List[int]        :type target: int        :rtype: List[List[int]]        """        res=[]        length=len(nums)        if length<4:            return []        if length==4 and sum(nums)==target:            res.append(nums)            return res        nums.sort()        for i in range(length-3):            if i>0 and nums[i]==nums[i-1]:                continue            for j in range(i+1,length-2):                if nums[i]+nums[j]+nums[j+1]+nums[j+2]>target:                    break                if nums[i]+nums[j]+nums[length-1]+nums[length-2]<target:                    continue                if nums[j]==nums[j-1] and j>i+1:                    continue                left=j+1                right=length-1                while left<right:                    tempsum=nums[i]+nums[j]+nums[left]+nums[right]                    if tempsum>target:                        right-=1                    elif tempsum<target:                        left+=1                    else:                        res.append([nums[i], nums[j], nums[left], nums[right]])                        left+=1                        right-=1                        while nums[left]==nums[left-1] and left<right:                            left+=1                        while nums[right]==nums[right+1] and right>left:                            right-=1        return res




原创粉丝点击