美文网首页
python遇上LeetCode:3sum问题

python遇上LeetCode:3sum问题

作者: DATA_KENGOU | 来源:发表于2020-03-20 12:18 被阅读0次

    题目来源

    注意点:

    1. hash方式的利用
    2. 预先对数组进行排序
    3. 如何对结果进行去重

    源码如下:

    class Solution:
        def threeSum(self, nums: List[int]) -> List[List[int]]:
            nums.sort()
            res = []
            rec_set = set()
            for i in range(len(nums)):
                if i > 0 and nums[i] == nums[i-1]: #去重1
                    continue
                cur_sum = 0 - nums[i]
                cur_hash = {}
                for j in range(i+1, len(nums)):
                    if nums[j] in cur_hash:
                        if len(res)>0 and nums[j] == res[-1][2] and nums[i]==res[-1][0]: #去重2
                            continue
                        res.append([
                            nums[i], 
                            cur_hash[nums[j]],
                            nums[j]   
                        ])
                    else:
                        cur_hash[cur_sum - nums[j]] = nums[j]
            return res
    

    相关文章

      网友评论

          本文标题:python遇上LeetCode:3sum问题

          本文链接:https://www.haomeiwen.com/subject/thxzxhtx.html