读完本文,你不仅学会了算法套路,还可以顺便解决如下题目:
LeetCode | 力扣 | 难度 |
---|---|---|
1. Two Sum | 1. 两数之和 | 🟢 |
15. 3Sum | 15. 三数之和 | 🟠 |
167. Two Sum II - Input Array Is Sorted | 167. 两数之和 II - 输入有序数组 | 🟠 |
18. 4Sum | 18. 四数之和 | 🟠 |
- | 剑指 Offer II 007. 数组中和为 0 的三个数 | 🟠 |
经常刷力扣的读者肯定知道鼎鼎有名的 twoSum
问题,不过除了 twoSum
问题,力扣上面还有 3Sum
,4Sum
问题,以后如果想出个 5Sum
,6Sum
也不是不可以。
总结来说,这类 nSum
问题就是给你输入一个数组 nums
和一个目标和 target
,让你从 nums
选择 n
个数,使得这些数字之和为 target
。
那么,对于这种问题有没有什么好办法用套路解决呢?本文就由浅入深,层层推进,用一个函数来解决所有 nSum
类型的问题。
提前说一下,对于本篇文章探讨的题目,使用 C++ 编写的代码更简洁易懂些,所以本文给出的都是 C++ 代码,你可以自行翻译成熟悉的语言。