给你一个由 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]]

class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:quadruplets = list()if not nums or len(nums) < 4:return quadrupletsnums.sort()length = len(nums)for i in range(length - 3):if i > 0 and nums[i] == nums[i - 1]:continueif nums[i] + nums[i + 1] + nums[i + 2] + nums[i + 3] > target:breakif nums[i] + nums[length - 3] + nums[length - 2] + nums[length - 1] < target:continuefor j in range(i + 1, length - 2):if j > i + 1 and nums[j] == nums[j - 1]:continueif nums[i] + nums[j] + nums[j + 1] + nums[j + 2] > target:breakif nums[i] + nums[j] + nums[length - 2] + nums[length - 1] < target:continueleft, right = j + 1, length - 1while left < right:total = nums[i] + nums[j] + nums[left] + nums[right]if total == target:quadruplets.append([nums[i], nums[j], nums[left], nums[right]])while left < right and nums[left] == nums[left + 1]:left += 1left += 1while left < right and nums[right] == nums[right - 1]:right -= 1right -= 1elif total < target:left += 1else:right -= 1return quadruplets
class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:quadruplets = list()if not nums or len(nums) <4:return quadrupletsnums.sort()length = len(nums)for i in range(length -3):if i >0 and nums[i] == nums[i-1]:continueif nums[i] + nums[i+1] + [nums[i+2] +nums[i+3] > target:breakif nums[i] + nums[lengh-3] + nums[length-2] +nums[length-1] <target:

2021-09-0818. 四数之和相关推荐

  1. Leetcode(18)-四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  2. 4. Leetcode 18. 四数之和 (数组-双向双指针)

    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...

  3. LeetCode 17电话号码的字母组合(搜索)18四数之和

    电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...

  4. 算法笔记-两数之和、三数之和、四数之和(LeetCode)

    两数之和 1.两数之和 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...

  5. java小编程----四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  6. 四数之和Python解法

    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...

  7. 两数、三数、四数之和相关题目(Leetcode题解-Python语言)

    作为 Leetcode 的第一题,两数之和自然是知名度最高的,从两数之和出发也有不少的衍生题目,下面就让我们好好地解决它们. 1. 两数之和 class Solution:def twoSum(sel ...

  8. 18. 四数之和(四指针,快排)

    四数之和--C语言实现 1. 问题描述和问题分析 2. C语言实现(O(n^2)) 1. 问题描述和问题分析 问题描述: 问题分析: 四数之和是之前的二数之和.三数之和的升级版,运用的主要思想也是相似 ...

  9. 力扣18. 四数之和(JavaScript)

    建立四个指针 四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[l ...

  10. 20200127:(leetcode)四数之和(动态图解)

    四数之和 题目 基本思路 代码实现 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + ...

最新文章

  1. 实施Service Mesh前,你需要考虑这几个问题
  2. 【cntk速成】cntk图像分类从模型自定义到测试
  3. 贞子的在日本历史出现过的轨迹
  4. day21-python模块
  5. 《c专家编程》笔记--define和typedef的区别
  6. 题解 P3367 【【模板】并查集】
  7. 【Leetcode 687】递归求最大相同路径
  8. 8数码问题-搜索-双向BFS/A*算法
  9. 计算机网络自顶向下方法 笔记 第一章:计算机网络和因特网
  10. AD9833介绍与应用(C语言实现)
  11. 双拼输入法学习-搜狗方案-3
  12. typescript入门练手小demo
  13. 利用Google博客搜索查看加密QQ空间(qzone)日志
  14. BAT某公司的一套面试题
  15. 计算机专业29岁研究生毕业,26岁,你还会考研吗?毕业后都奔三了!_计算机考研科目...
  16. Vivado IP核之复数浮点数乘法 Floating-point
  17. Android MediaRecorder录制视频详细步骤
  18. iOS图片不失真拉伸方法
  19. Visio 2007 画大括号
  20. MSI(微星) GP62mvr Ubuntu16.04 + Opencv3.4.1配置教程

热门文章

  1. 【转】响应式布局和自适应布局详解
  2. How to Create and Drop database in MongoDB
  3. WPF备忘录(1)有笑脸,有Popup
  4. 虚拟化技术在企业中的实际应用
  5. 新系统基础优化--Centos6.6
  6. 华为手机连不上adb解决方法
  7. centos 6.5 找回root密码的方法
  8. IOS小工具以及精彩的博客
  9. 剑指 offer set 8 树的子结构
  10. 在windows7中安装了office了