题目:给出一个数组和一个目标整数,从数组中任意取(有放回的抽取)四个数相加等于这个目标整数,求满足条件的四个数。
输入:一个数组nums[] 和 一个整数target
输出:满足条件的整数序列 List<List< I n t e g e r >>
别人思路:
对数组排序
确定四元数中的前两个(a,b)
遍历剩余数组确定两外两个(c,d),确定cd时思路跟3Sum确定后两个数据一样,二分查找左右逼近。

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> list = new ArrayList<List<Integer>>() ;if(nums == null || nums.length<4){return list ;}Arrays.sort(nums);if(nums[0]*4>target ||nums[nums.length-1]*4<target){return list ;}for(int i=0;i<nums.length-3;i++){if(i!=0&&nums[i]==nums[i-1]){continue;}for(int j=i+1;j<nums.length-2;j++){if(j!=i+1&&nums[j]==nums[j-1]){continue;}int left = j+1 ;int right = nums.length - 1 ;while (left<right){int sum = nums[i] + nums[j] + nums[left] + nums[right] ;if(sum == target){List<Integer> temp = new ArrayList<Integer>() ;temp.add(nums[i]) ;temp.add(nums[j]) ;temp.add(nums[left]) ;temp.add(nums[right]) ;list.add(temp) ;right -- ;left ++ ;while (left < right && nums[right] == nums[right+1]){right -- ;}while(left<right && nums[left] == nums[left-1]){left ++ ;}}else if(sum > target){right -- ;}else {left ++ ;}}}}return list ;}
}

leetcode18.4Sum相关推荐

  1. Leetcode分类练习-查找(2)对撞指针

    对撞指针 leetcode1 Two Sum 题目描述 给出一个整型数组nums,返回这个数组中两个数字的索引值i和j,使得nums[i]+nums[j]等于给定的一个target值,两个索引不能相等 ...

  2. leetcode18

    先给出一个使用回溯法,求"组合",但是这种方案会TLE: 1 class Solution: 2 def __init__(self): 3 self.filter = set() ...

  3. leetcode 18 -- 4Sum

    4Sum 题目:Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + ...

  4. [LeetCode] 4Sum II 四数之和之二

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

  5. 2sum、3sum、4sum以及任意连续的数的和为sum、任意连续或者不连续的数的和为sum...

    2sum 如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,如果某一刻a[i]+a ...

  6. LeetCode算法入门- 4Sum -day11

    LeetCode算法入门- 4Sum -day11 Given an array nums of n integers and an integer target, are there element ...

  7. Algs4-1.4.14 4-sum

    1.4.14  4-sum.为4-sum设计一个算法. 答: import java.util.Arrays; public class FourSum {     public static int ...

  8. LeetCode 454. 4Sum II

    454. 4Sum II Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) the ...

  9. Leetcode18.四数之和

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

最新文章

  1. 某都计算机考研计算机组成原理,东北大学2000年考研真题-计算机组成原理
  2. python 编程一日一练-Python一日一练02----诗词生成器
  3. STM8S单片机修改工程编译器配置
  4. 一个菜鸟怎样做好功能测试?
  5. 微信支付宝关闭三星Galaxy指纹支付;乐视网回应贾跃亭破产;Chrome 78发布|极客头条...
  6. windows下文件系统格式介绍
  7. quartus仿真28:JK触发器实现的脉冲分配器(分析)
  8. 数据库信息查询(作者不是我)
  9. 基础图像处理之混合空间增强——(Java:拉普拉斯锐化、Sobel边缘检测、均值滤波、伽马变换)...
  10. 华为光纤猫HG8240R设置
  11. Java 常用的依赖包
  12. python初步学习笔记(上)
  13. Matlab画一半实线一半虚线,PPT中怎么绘制一个一半实线一半虚线的圆?
  14. pycharm 连接数据库报错
  15. html中如何放音乐 和视频播放器,HTML5培训之HTML5音乐播放器和视频播放器分享
  16. iOS 项目源码大全 github 国内外大神
  17. 学计算机的人常备哪些护眼的东西,常用电脑的人如何保护视力?
  18. 乐教乐学显示服务器故障怎么了,乐教乐学常见问题有哪些,如何解决闪退问题...
  19. Qt vs2010开发环境搭建
  20. The road you are trudging is bound for loneliness.(前行的道路注定孤独)

热门文章

  1. CentOS7.3下部署Rsyslog+LogAnalyzer+MySQL中央日志服务器
  2. 关于重定向页面和请求转发页面的区别
  3. 读书日记- 堆排序算法
  4. asp.net mvc源码分析-Action篇 Action的执行
  5. 《设计模式详解》创建型模式 - 原型模式
  6. 那年学过的Oracle笔记
  7. 写给数据小白:怎么让你的分析结论超出预期,不再是废纸一堆
  8. web报表工具FineReport最经常用到部分函数详解
  9. 检测air运行环境版本
  10. 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?