和3Sum的解法仍然是十分类似的,我们先reduce成3Sum,继续reduce成2Sum的问题。2Sum的话我们就可以用two pointer或者hashmap来做,去重的思路仍然是类似的,这里我们用two pointer,时间复杂度O(N^3),常数空间。代码如下:
除此之外我们还可以reduce成两个two sum的问题。但这样去重会有点麻烦,我们需要用hashmap去重,具体请参考代码里的注释。时间复杂度O(k * N^2),k为每个sum对应的list的平均长度。代码如下:
我们可以generalize K sum问题的解决办法,即一步一步reduce成2sum的问题,用dfs即可。时间复杂度O(N^(k - 1))。代码如下:
No comments:
Post a Comment