Two Sum,3Sum,3Sum Closest,4Sum
2014-11-26 21:52
411 查看
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所用的数对的后面(保证题目要求a ≤
b ≤ c ≤ d)
如果在后面,则这四个数字组成一组答案
挑出所有的答案,并去除重复即可(其中去重复的时间复杂度不清楚,总体时间复杂度应该是: O(n^2) 乘 (去重复复杂度))
用哈希表,一边建立一边搜索,应该是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所用的数对的后面(保证题目要求a ≤
b ≤ c ≤ d)
如果在后面,则这四个数字组成一组答案
挑出所有的答案,并去除重复即可(其中去重复的时间复杂度不清楚,总体时间复杂度应该是: O(n^2) 乘 (去重复复杂度))
相关文章推荐
- 第五周:[leetcode] Two Sum、3Sum、3Sum Closest、4Sum
- 程序员面试题目总结--数组(27)【Two Sum 、3Sum、3Sum Closest 、4Sum】
- LeetCode:3Sum, 3Sum Closest, 4Sum
- LeetCode OJ - 3Sum、3Sum Closest、4Sum
- LeetCode Two Sum、3Sum、3Sum Closest、4Sum
- leetcode 3Sum 3Sum Closest 4Sum
- LeetCode:3Sum, 3Sum Closest, 4Sum
- 【LeetCode】3Sum && 3Sum Closest && 4Sum
- LeetCode 3Sum&&3Sum Closest&&4Sum
- 3sum和4sum(从数组中选3/4个数,使其和为目标值)
- 3Sum & 3Sum Closest & 4Sum
- leetcode 第15-16题 3Sum & 3Sum Closest
- 4Sum(****) 基于3Sum
- LeetCode 16. 3Sum Closest LeetCode 18. 4Sum
- 2016/10/28 很久没更了 leetcode解题 3sum问题进阶版4sum
- [Leetcode][求和问题2Sum/3Sum/4Sum/KSum]相关题目汇总/分析/总结
- Two Sum & 3Sum & 3Sum Closest & 4Sum
- 3Sum,4Sum问题
- 【LeetCode】3Sum,3Sum Closest 题解报告
- [置顶] 15. 3Sum,16. 3Sum Closest,18. 4Sum(最后一个方法重要)重要