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

注意:

答案中不可以包含重复的四元组。

示例:

  1. 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0
  2.  
  3. 满足要求的四元组集合为:
  4. [
  5. [-1, 0, 0, 1],
  6. [-2, -1, 1, 2],
  7. [-2, 0, 0, 2]
  8. ]
    和三数之和的区别就是,在外层多了一层for循环。
  1. class Solution {
  2. public List<List<Integer>> fourSum(int[] nums, int target) {
  3. List<List<Integer>> res = new ArrayList<>();
  4. if(nums.length < 4)return res;
  5. Arrays.sort(nums);
  6. for(int i = 0;i < nums.length - 3;i++){
  7. if(i > 0 && nums[i] == nums[i-1])continue;
  8. for(int j = i + 1;j < nums.length - 2;j++){
  9. if(j > i + 1 && nums[j] == nums[j-1]) continue;
  10. int low = j + 1,high = nums.length - 1;
  11. while(low < high){
  12. int sum = nums[i] + nums[j] + nums[low] + nums[high];
  13. if(sum == target){
  14. res.add(Arrays.asList(nums[i],nums[j],nums[low],nums[high]));
  15. while(low < high && nums[low] == nums[low+1])low++;
  16. while(low < high && nums[high] == nums[high-1]) high--;
  17. low++;
  18. high--;
  19. }else if(sum < target){
  20. low++;
  21. }else high--;
  22. }
  23. }
  24. }
  25. return res;
  26. }
  27. }

2019-04-17 21:23:25

用python按上面的写一遍,发现根本过不了,要提前停止搜索,所以又加了四个if

  1. class Solution:
  2. def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
  3. n = len(nums)
  4. if n<4:
  5. return []
  6. nums.sort()
  7. res = []
  8. for i in range(n-3):
  9. if i>0 and nums[i]==nums[i-1]:continue
  10. if(nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target):
  11. break
  12. if(nums[i]+nums[-1]+nums[-2]+nums[-3]<target):
  13. continue
  14. for j in range(i+1,n-2):
  15. if(nums[i]+nums[j]+nums[j+1]+nums[j+2]>target):
  16. break
  17. if(nums[i]+nums[j]+nums[-1]+nums[-2]<target):
  18. continue
  19. if j>i+1 and nums[j]==nums[j-1]:continue
  20. L = j+1
  21. R = n-1
  22. while L<R:
  23. print(R)
  24. temp = nums[i]+nums[j]+nums[L]+nums[R]
  25. if temp == target:
  26. res.append([nums[i],nums[j],nums[L],nums[R]])
  27. while L<R and nums[L]==nums[L+1]:
  28. L+=1
  29. while L<R and nums[R]==nums[R-1]:
  30. R-=1
  31. L+=1
  32. R-=1
  33. elif temp < target:
  34. L+=1
  35. else:
  36. R-=1
  37. return res

2019-11-30 08:32:54

LeetCode--018--四数之和(java)的更多相关文章

  1. LeetCode:四数之和【18】

    LeetCode:四数之和[18] 题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c ...

  2. Java实现 LeetCode 18 四数之和

    18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target ...

  3. 【LeetCode】四数之和

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

  4. [LeetCode] 4Sum 四数之和

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  5. 【LeetCode】四数之和【排序,固定k1,k2,二分寻找k3和k4】

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

  6. LeetCode 18. 四数之和(4Sum)

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

  7. [Leetcode 18]四数之和 4 Sum

    [题目] Given an array nums of n integers and an integer target, are there elements a, b, c, and d in n ...

  8. [LeetCode] 18. 四数之和

    题目链接:https://leetcode-cn.com/problems/4sum/ 题目描述: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个 ...

  9. [LeetCode] 454. 4Sum II 四数之和II

    Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...

  10. 【LeetCode】18. 4Sum 四数之和

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:four sum, 4sum, 四数之和,题解,leet ...

随机推荐

  1. 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection

    之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...

  2. openstack--部暑

    ##1.Centos7环境准备-- openstack pike ##1.Centos7环境准备-- openstack pike [https://blog.csdn.net/shiyu115775 ...

  3. mybatis中namespace配置方式

    namespace有三种全路径的配置方式: namespace绑定实体类的全路径;绑定dao接口的全路径绑定;mapper的sql.xml文件第一种:namespace绑定实体类的全路径: 当name ...

  4. abap 断言

    1: Assert equal http://www.saptechnical.com/Tutorials/OOPS/ABAPUnit/Index.htm

  5. Redis单机配置以及集群(sentinel、jediscluster)配置

    最近一直在使用Redis作为缓存数据库,在使用当中,刚开始没有注意配置问题. 1.纯粹的注入单机模式 <bean id="jedisPoolConfig" class=&qu ...

  6. python 全局变量的import机制

    在之前学习python设计模式(工厂模式实践篇),希望使用全局变量代替c++的宏完成服务自动注册功能时,遇到过一个问题,全局变量的定义和使用放在同一个可执行脚本中的问题.先把有问题的代码晒一下: IS ...

  7. Linux上不了网的几个排查点

    下面是所有系统通用排查流程: 1.先ping网关: 例ping 192.168.12.1: 如果能通说明本地IP配置和本地到路由器的链路未发生问题. 如果不通需要检查本地设置和本地到路由的网线连接状态 ...

  8. AES,BigInteger,MD5加密

    http://tool.oschina.net/apidocs/apidoc?api=jdk-zh package cn.com.gome.cashier.web; import java.lang. ...

  9. Shiro授权管理

    一.授权 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permissi ...

  10. c#调用GetModuleFileNameEx获取进程路径

    原文最早发表于百度空间2009-09-04 [DllImport("Kernel32.dll", EntryPoint = "OpenProcess")]pub ...