zoukankan      html  css  js  c++  java
  • leetcode 18-> 4Sum

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

  • 相关阅读:
    每周总结
    5月2日学习日志
    5月1日学习日志
    4月30日学习日志
    4月29日学习日志
    4月28日学习日志
    4月27日学习日志
    每周总结
    vue滚动插件BetterScroll
    vue 获取页面高度
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10525045.html
Copyright © 2011-2022 走看看