LeetCode题目:四数之和
发布日期:2021-11-18 19:17:47
浏览次数:10
分类:技术文章
本文共 1583 字,大约阅读时间需要 5 分钟。
题目描述
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [[-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2]] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/4sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路:
四数之和其实和三数之和的思路差不多,定义一个外循环,循环遍历排列后的数组除了最后3个的其他元素,循环体里面就是一个三数之和了,区别在于sum是四个元素的相加。另外,还可以考虑每一层的循环中能达到的最小最大值,和target做比较,如果该层中的最小最大值分别大于和小于target,那就可以直接跳过这一层了,以此来减少迭代的次数。
代码(Java):
public class Redo { public static void main(String[] args) { int[] nums = new int[] { -1,0,1,2,-1,-4}; int target = -1; System.out.println(fourSum(nums, target)); } public static List
> fourSum(int[] nums,int target){ List
> ans = new ArrayList
>(); if(nums==null || nums.length<4) return ans; Arrays.sort(nums); int length = nums.length; for(int h = 0;h 0 && nums[h]==nums[h-1]) continue; //这个数字出现在这一位(第一位)的情况已经有了,跳过 int min1 = nums[h]+nums[h+1]+nums[h+2]+nums[h+3]; //这个是h这个循环中能达到的最小值 if(min1>target) { //如果这个最小值都比target大,那就没有值等于target的了,直接结束 break; } int max1 = nums[h]+nums[length-1]+nums[length-2]+nums[length-3]; //这个是h这个循环中能达到的最大值 System.out.println(max1); if(max1 h+1 && nums[i]==nums[i-1]) continue;//这个数字出现在这一位(第二位)的情况已经有了,跳过 int j = i+1; int k = length-1; int min2 = nums[h]+nums[i]+nums[j]+nums[j+1];//这个是i这个循环中能达到的最小值 if(min2>target) { //如果这个最小值都比target大,那就没有值等于target的了,直接跳过 continue; } int max2 = nums[h]+nums[i]+nums[k]+nums[k-1];//这个是i这个循环中能达到的最大值 if(max2 target) k--; else if(sum
转载地址:https://blog.csdn.net/weixin_39224015/article/details/105689070 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 06时54分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android从触碰屏幕开始的事件采集,解析及分发(1)
2019-04-26
福利来袭,免费获取 Android 开发资料以及直播课程
2019-04-26
优势丧失
2019-04-26
【上市啦】“Python 之父” 力荐的蓝皮书,你知道是哪本吗?
2019-04-26
Python 爬虫面试题 170 道:2019 版
2019-04-26
歪门邪道
2019-04-26
我的前六年程序生涯
2019-04-26
知识地图
2019-04-26
罗马总会建成
2019-04-26
程序通过技术赚钱的八个途径
2019-04-26
我在爬坡阶段
2019-04-26
大疆机甲大师教育机器人Python开发:中文命名变量初尝试
2019-04-26
大疆机甲大师教育机器人Python开发:API中文化初尝试
2019-04-26
大疆机甲大师Python开发: 两只老虎
2019-04-26
大疆机甲大师教育机器人Python API中文化之一:枪亮枪暗
2019-04-26
大疆机甲大师教育机器人Python API中文化之二:LED闪烁
2019-04-26
大疆 RoboMaster 机甲大师官方刚刚开通”机甲小 S 实验室”知乎专栏
2019-04-26
大疆机甲大师教育机器人Python API中文化之三:底盘灯效
2019-04-26
大疆机甲大师教育机器人Python API中文化之四五:云台灯效,指定序号
2019-04-26
大疆机甲大师教育机器人Python API中文化之六:关灯
2019-04-26