交流 | 为毛这样写就不行,郁闷了
1277
2024.02.02
2024.02.02
发布于 未知归属地

题目是三数之和,官方解法是用双指针。我感觉可以分开遍历两次,时间复杂度也是O(n^2),怎么会超时呢😢😢😢

要不还是不要动脑了吧,直接背答案算了。想半天没结果🙃🙃🙃

代码

Python 三数之和
from collections import defaultdict

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        ans = set()
        nums = sorted(nums)

        result_map = defaultdict(list)

        any(result_map[nums[i] + nums[j]].append((i, j)) for i in range(len(nums)) for j in range(i + 1, len(nums)))

        for i in range(len(nums)):
           if (k := result_map.get(-1 * nums[i], None)) is not None:
                sorted_triplets = map(lambda x: tuple(sorted([nums[i], nums[x[0]], nums[x[1]]])), filter(lambda x: i not in x, k))
                ans.update(sorted_triplets)

        return [list(triplet) for triplet in ans]
评论 (11)