leetcode18.4Sum
题目:给出一个数组和一个目标整数,从数组中任意取(有放回的抽取)四个数相加等于这个目标整数,求满足条件的四个数。
输入:一个数组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相关推荐
- Leetcode分类练习-查找(2)对撞指针
对撞指针 leetcode1 Two Sum 题目描述 给出一个整型数组nums,返回这个数组中两个数字的索引值i和j,使得nums[i]+nums[j]等于给定的一个target值,两个索引不能相等 ...
- leetcode18
先给出一个使用回溯法,求"组合",但是这种方案会TLE: 1 class Solution: 2 def __init__(self): 3 self.filter = set() ...
- 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 + ...
- [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 ...
- 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 ...
- LeetCode算法入门- 4Sum -day11
LeetCode算法入门- 4Sum -day11 Given an array nums of n integers and an integer target, are there element ...
- Algs4-1.4.14 4-sum
1.4.14 4-sum.为4-sum设计一个算法. 答: import java.util.Arrays; public class FourSum { public static int ...
- 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 ...
- Leetcode18.四数之和
Time: 20190920 Type: Medium 题目描述 给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c 和d ,使得a + b + c ...
最新文章
- 某都计算机考研计算机组成原理,东北大学2000年考研真题-计算机组成原理
- python 编程一日一练-Python一日一练02----诗词生成器
- STM8S单片机修改工程编译器配置
- 一个菜鸟怎样做好功能测试?
- 微信支付宝关闭三星Galaxy指纹支付;乐视网回应贾跃亭破产;Chrome 78发布|极客头条...
- windows下文件系统格式介绍
- quartus仿真28:JK触发器实现的脉冲分配器(分析)
- 数据库信息查询(作者不是我)
- 基础图像处理之混合空间增强——(Java:拉普拉斯锐化、Sobel边缘检测、均值滤波、伽马变换)...
- 华为光纤猫HG8240R设置
- Java 常用的依赖包
- python初步学习笔记(上)
- Matlab画一半实线一半虚线,PPT中怎么绘制一个一半实线一半虚线的圆?
- pycharm 连接数据库报错
- html中如何放音乐 和视频播放器,HTML5培训之HTML5音乐播放器和视频播放器分享
- iOS 项目源码大全 github 国内外大神
- 学计算机的人常备哪些护眼的东西,常用电脑的人如何保护视力?
- 乐教乐学显示服务器故障怎么了,乐教乐学常见问题有哪些,如何解决闪退问题...
- Qt vs2010开发环境搭建
- The road you are trudging is bound for loneliness.(前行的道路注定孤独)