LeetCode总结 -- kSum篇
来源:互联网 发布:人工智能编程书籍 编辑:程序博客网 时间:2024/05/09 13:06
这篇总结主要介绍LeetCode中几道关于求kSum的题目, 主要要求是在数组中寻找k个数的和能否达到目标值。 LeetCode关于kSum的主要题目有:
Two Sum
3Sum
3Sum Closest
4Sum
首先从Two Sum开始, 这道题目提供了后面k>2的题目的基本思路, 也是最常考到的题目(亚马逊的面试对这道题算是情有独钟了)。 主要有两种思路, 一种是利用哈希表对元素的出现进行记录,然后进来新元素时看看能不能与已有元素配成target, 如果哈希表的访问是常量操作,这种算法复杂度是O(n)。 另一种思路则是先对数组进行排序, 然后利用夹逼的方法找出满足条件的pair, 算法的复杂度是O(nlogn)。 两种方法都比brute force的O(n^2)要优, 具体可以参见题目Two Sum的具体分析。 因为这道题模型简单, 但是可以考核到哈希表等基本数据结构和排序等基本算法, 所以是面试中的常客。
接下来是3Sum和3Sum Closest, 3Sum是使用Two Sum的第二种方法作为子操作, 然后循环每个元素, 寻找剩下的元素满足条件的pair即可。 3Sum Closest和3Sum很类似, 只是要多维护一个最小的diff, 保存和target最近的值。 算法的复杂度是O(n^2), 这道题使用Two Sum的第一种方法并不合适, 因为当出现元素重复时用哈希表就不是很方便了。
最后是4Sum, 这道题的比较优的解法是用求解一般kSum的解法进行层层二分, 然后用Two Sum结合起来, 基本思路是这样, 实现细节还是比较复杂的, 即使是4Sum都比较复杂了, 所以面试中难度和实现细节也就到这了, kSum这种一般性的问题只需要知道思路就可以满足面试要求了哈。
Two Sum
3Sum
3Sum Closest
4Sum
首先从Two Sum开始, 这道题目提供了后面k>2的题目的基本思路, 也是最常考到的题目(亚马逊的面试对这道题算是情有独钟了)。 主要有两种思路, 一种是利用哈希表对元素的出现进行记录,然后进来新元素时看看能不能与已有元素配成target, 如果哈希表的访问是常量操作,这种算法复杂度是O(n)。 另一种思路则是先对数组进行排序, 然后利用夹逼的方法找出满足条件的pair, 算法的复杂度是O(nlogn)。 两种方法都比brute force的O(n^2)要优, 具体可以参见题目Two Sum的具体分析。 因为这道题模型简单, 但是可以考核到哈希表等基本数据结构和排序等基本算法, 所以是面试中的常客。
接下来是3Sum和3Sum Closest, 3Sum是使用Two Sum的第二种方法作为子操作, 然后循环每个元素, 寻找剩下的元素满足条件的pair即可。 3Sum Closest和3Sum很类似, 只是要多维护一个最小的diff, 保存和target最近的值。 算法的复杂度是O(n^2), 这道题使用Two Sum的第一种方法并不合适, 因为当出现元素重复时用哈希表就不是很方便了。
最后是4Sum, 这道题的比较优的解法是用求解一般kSum的解法进行层层二分, 然后用Two Sum结合起来, 基本思路是这样, 实现细节还是比较复杂的, 即使是4Sum都比较复杂了, 所以面试中难度和实现细节也就到这了, kSum这种一般性的问题只需要知道思路就可以满足面试要求了哈。
0 0
- LeetCode总结 -- kSum篇
- LeetCode总结 -- kSum篇
- LeetCode相关的KSum总结
- [C++]LeetCode: 71 4Sum && kSum总结
- LeetCode 求和问题总结(2sum,3sum,ksum)
- leetcode - 3Sum ( kSum )
- Ksum问题 (leetcode)
- kSum问题的总结
- leetcode-18 4Sum(kSum)
- leetcode--ksum问题--3sum
- leetcode 18: 4Sum (KSum)
- 【Ksum】求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- [Leetcode][求和问题2Sum/3Sum/4Sum/KSum]相关题目汇总/分析/总结
- kSum
- ksum
- LeetCode(3 Sum, 4sum, ksum)
- leetcode - 3Sum Closest (kSum Closest)
- LeetCode-15-3Sum(证明/KSum)-Medium
- 组合模式
- 【源码】HashMap源码剖析
- 策略模式
- 智能问答系统学习笔记
- 状态模式
- LeetCode总结 -- kSum篇
- Linux搭建SVN服务器
- 代理模式
- 美国实习的同事们
- 场景和过渡
- Variable is not assignable (missing__block type specifier)
- 全国主要城市交通卡芯片一览,看看有没有你的家乡……
- 套接子的“壳”论 1
- 2014 Multi-University Training Contest 8 1002