Two Sum,3Sum,3Sum Closest,4Sum

本文探讨了TwoSum、3Sum、3SumClosest及4Sum等经典算法问题的解决方案,详细介绍了如何运用哈希表、排序等技术手段实现高效求解。针对不同问题的特点,文章提供了多种算法思路,如通过一次遍历解决TwoSum问题,采用双指针技巧优化3Sum问题,以及利用哈希表加速4Sum问题的求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Two Sum

用哈希表,一边建立一边搜索,应该是O(n)

python中有内置set类,还有dict类等可以方便使用,注意查看官方文档


3Sum

首先猜测应该是O(n^2), 那么就可以用排序O(nlogn),再搜索O(n^2),一个指针p从最前面开始遍历,对于p的每一个位置,有两个指针 i,j 在其后,根据和的大小从两端向中间夹


3Sum Closest

过程与 3Sum 相同,只是记录的信息不同


4Sum

O(n^3)的方法就不说了,利用空间为O(n^2)的哈希表可以改进为时间复杂度为O(n^2)到O(n^3)之间

首先对所有数排序O(nlogn),建立一个字典dict,记录两两相加的所有和以及得到该和值的两个数字的位置数对,O(n^2) / O(n^2)

再次 O(n^2) 遍历,每一次求出两个数的和,记为 sum, 再在dict 中查找 target - sum,如果存在,查看存储的数对是否在求sum所用的数对的后面(保证题目要求abcd

如果在后面,则这四个数字组成一组答案

挑出所有的答案,并去除重复即可(其中去重复的时间复杂度不清楚,总体时间复杂度应该是: O(n^2) 乘 (去重复复杂度))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值