老师,请教一下LeetCode 18-4Sum 这题。 我提交了后,看到基本大多数的solution还是照着 3sum 那样做的。就是数据先排序, 然后先两重循环确定 前两个数, 然后 用 l,r 指针对撞法来找出 后两个数。这样的solution 时间复杂度我理解是 O(n^3)的。
我除了这种方式,后来尝试另一种方法。数据先排序,然后先是用两层循环把前后不同索引的两个数之和用查找表 dictionary 缓存起来。然后再是一个循环,开始2层和之前那种solution一样确定前2个数,但是到第三层我不用对撞,而是直接从前面的dictionary 中拿出所有 两两相加的和能够和前两层循环中的数一起 加起来==target 的数对,然后把不重复的放入结果。 我的理解,这样的话第三层循环中找的数对应该会比较少。不过实际提交下来,结果不如前一种solution。
不知道我有没有表达清楚, 这两种solution 时间对比应该怎么来看,谢谢。