LeetCode总结 -- kSum篇

这篇总结主要介绍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这种一般性的问题只需要知道思路就可以满足面试要求了哈。
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
LeetCode-Editor是一种在线编码工具,它提供了一个用户友好的界面编写和运行代码。在使用LeetCode-Editor时,有时候会出现乱码的问题。 乱码的原因可能是由于编码格式不兼容或者编码错误导致的。在这种情况下,我们可以尝试以下几种解决方法: 1. 检查文件编码格式:首先,我们可以检查所编辑的文件的编码格式。通常来说,常用的编码格式有UTF-8和ASCII等。我们可以将编码格式更改为正确的格式。在LeetCode-Editor中,可以通过界面设置或编辑器设置来更改编码格式。 2. 使用正确的字符集:如果乱码是由于使用了不同的字符集导致的,我们可以尝试更改使用正确的字符集。常见的字符集如Unicode或者UTF-8等。在LeetCode-Editor中,可以在编辑器中选择正确的字符集。 3. 使用合适的编辑器:有时候,乱码问题可能与LeetCode-Editor自身相关。我们可以尝试使用其他编码工具,如Text Editor、Sublime Text或者IDE,看是否能够解决乱码问题。 4. 查找特殊字符:如果乱码问题只出现在某些特殊字符上,我们可以尝试找到并替换这些字符。通过仔细检查代码,我们可以找到导致乱码的特定字符,并进行修正或替换。 总之,解决LeetCode-Editor乱码问题的方法有很多。根据具体情况,我们可以尝试更改文件编码格式、使用正确的字符集、更换编辑器或者查找并替换特殊字符等方法来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值