0
点赞
收藏
分享

微信扫一扫

Python描述 LeetCode 18. 四数之和


Python描述 LeetCode 18. 四数之和

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

Python描述 LeetCode 18. 四数之和_职场和发展

本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给你一个由 ​​n​​​ 个整数组成的数组 ​​nums​​​ ,和一个目标值 ​​target​​ 。请你找出并返回满足下述全部条件且不重复的四元组 ​​[nums[a], nums[b], nums[c], nums[d]]​​ (若两个四元组元素一一对应,则认为两个四元组重复):

  • ​0 <= a, b, c, d < n​
  • ​a​​​、​​b​​​、​​c​​​ 和​​d​互不相同
  • ​nums[a] + nums[b] + nums[c] + nums[d] == target​

你可以按 任意顺序 返回答案 。

示例 1:

输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]

示例 2:

输入:nums = [2,2,2,2,2], target = 8
输出:[[2,2,2,2]]

提示:

  • ​1 <= nums.length <= 200​
  • ​-109 <= nums[i] <= 109​
  • ​-109 <= target <= 109​

Python描述

前两个数遍历,后两个数双指针

class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
# 遍历前两个,后两个用双指针
n = len(nums)
res = set()
nums.sort()
for i in range(n-3):
for j in range(i+1,n-2):
l,r = j + 1, n-1
while l < r:
tmp = nums[i] + nums[j] + nums[l] + nums[r]
if tmp == target:
res.add((nums[i] , nums[j] , nums[l] , nums[r]))
if tmp < target:
l += 1
else:
r -= 1
return [list(_) for _ in res]


举报

相关推荐

0 条评论