leetcode 之4Sum问题

本文介绍了LeetCode上的4Sum问题,目标是找到数组中四个元素的和等于给定目标值的所有独特四元组。文章提供了一个解决方案,通过固定一个元素并递归地解决3Sum和2Sum子问题来实现。示例数组S = [1, 0, -1, 0, -2, 2]和目标值target = 0,得到的解包括[-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2]。" 82470095,7435525,Dubbo搭建踩坑与解决:配置问题解析,"['Dubbo', 'Zookeeper', '服务框架', '配置', '故障排除']
摘要由CSDN通过智能技术生成

问题描述:

Given an array S of n integers, are there elements a,b,c, andd inS such thata +b +c +d = target?

Find all unique quadruplets(四元组) in the array which gives the sum of target.

Note(提示): The solution set must not contain duplicate(重复的,完全一样的) quadruplets. 、

例子:

For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.

A solution set is:
[
  [-1,  0, 0, 1],
  [-2, -1, 1, 2],
  [-2,  0, 0, 2]
]

问题来源:4Sum  (详细地址:https://leetcode.com/problems/4sum/#/description)

思路:这道题的思路其实和2Sum,3Sum的思路几乎是一致的,3Sum是固定住一个数,动用两个指针,从而转化为2Sum问题; 4Sum问题也是类似的:

            1) 第一次固定住一个数,在这记为before(因为待会还要标记当前值,所以在此将它标记为before,不够好像有点不符合命名习惯),传递给threeSumForFourSum函数;

            2)紧接着再次固定住一个整数,在此当前值就记作了now(在这有点符合命名习惯了吧),传递给twoSumForFourSum函数;

            3)接着就是处理2Sum问题了,主要是动用首尾两个指针(在这记作low和high),然后将这两个指针往中间靠拢求解就可以了。


代码:

主体部分:

转化为threeSumForFourSum函数:


转化为twoSumForFourSum函数求解:



   


                                   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值